-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
45 lines (44 loc) · 64.5 KB
/
index.html
File metadata and controls
45 lines (44 loc) · 64.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<!DOCTYPE html><html><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"/><link rel="preload" href="/component---src-layouts-index-js-fa783bea929f421f7a9e.js" as="script"/><link rel="preload" href="/component---src-pages-index-js-1bc116d76406ca9e28a9.js" as="script"/><link rel="preload" href="/path---index-1a1f794e0d995be43089.js" as="script"/><link rel="preload" href="/app-26863e7bf611f788191d.js" as="script"/><link rel="preload" href="/commons-d27b2d4800120666d7b5.js" as="script"/><link rel="alternate" type="application/rss+xml" href="/rss.xml"/><title data-react-helmet="true">Engineering at MindLink</title><style id="typography.js">html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}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:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[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-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}html{font:100%/1.625 -apple-system,'BlinkMacSystemFont','Segoe UI','Roboto','Helvetica','Arial',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';box-sizing:border-box;overflow-y:scroll;}*{box-sizing:inherit;}*:before{box-sizing:inherit;}*:after{box-sizing:inherit;}body{color:hsla(0,0%,0%,0.8);font-family:-apple-system,'BlinkMacSystemFont','Segoe UI','Roboto','Helvetica','Arial',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-weight:normal;word-wrap:break-word;font-kerning:normal;-moz-font-feature-settings:"kern", "liga", "clig", "calt";-ms-font-feature-settings:"kern", "liga", "clig", "calt";-webkit-font-feature-settings:"kern", "liga", "clig", "calt";font-feature-settings:"kern", "liga", "clig", "calt";}img{max-width:100%;margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;}h1{margin-left:0;margin-right:0;margin-top:2.4375rem;padding-bottom:calc(0.40625rem - 1px);padding-left:0;padding-right:0;padding-top:0;margin-bottom:1.21875rem;color:inherit;font-family:-apple-system,'BlinkMacSystemFont','Segoe UI','Roboto','Helvetica','Arial',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-weight:600;text-rendering:optimizeLegibility;font-size:2rem;line-height:1.1;border-bottom:1px solid hsla(0,0%,0%,0.07);}h2{margin-left:0;margin-right:0;margin-top:1.625rem;padding-bottom:calc(0.40625rem - 1px);padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.40625rem;color:inherit;font-family:-apple-system,'BlinkMacSystemFont','Segoe UI','Roboto','Helvetica','Arial',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-weight:600;text-rendering:optimizeLegibility;font-size:1.51572rem;line-height:1.1;border-bottom:1px solid hsla(0,0%,0%,0.07);}h3{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;color:inherit;font-family:-apple-system,'BlinkMacSystemFont','Segoe UI','Roboto','Helvetica','Arial',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-weight:600;text-rendering:optimizeLegibility;font-size:1.31951rem;line-height:1.1;}h4{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;color:inherit;font-family:-apple-system,'BlinkMacSystemFont','Segoe UI','Roboto','Helvetica','Arial',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-weight:600;text-rendering:optimizeLegibility;font-size:1rem;line-height:1.1;}h5{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;color:inherit;font-family:-apple-system,'BlinkMacSystemFont','Segoe UI','Roboto','Helvetica','Arial',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-weight:600;text-rendering:optimizeLegibility;font-size:0.87055rem;line-height:1.1;}h6{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;color:hsla(0,0%,0%,0.53);font-family:-apple-system,'BlinkMacSystemFont','Segoe UI','Roboto','Helvetica','Arial',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-weight:600;text-rendering:optimizeLegibility;font-size:0.81225rem;line-height:1.1;}hgroup{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;}ul{margin-left:1.625rem;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;list-style-position:outside;list-style-image:none;}ol{margin-left:1.625rem;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;list-style-position:outside;list-style-image:none;}dl{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;}dd{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;}p{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;}figure{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;}pre{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;font-size:0.85rem;line-height:1.625rem;}table{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;font-size:1rem;line-height:1.625rem;border-collapse:collapse;width:100%;}fieldset{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;}blockquote{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:calc(0.8125rem - 1px);padding-right:0;padding-top:0;margin-bottom:0.8125rem;border-left:4px solid hsla(0,0%,0%,0.13);color:hsla(0,0%,0%,0.53);}form{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;}noscript{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;}iframe{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;}hr{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:calc(0.8125rem - 1px);background:hsla(0,0%,0%,0.2);border:none;height:1px;}address{margin-left:0;margin-right:0;margin-top:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;margin-bottom:0.8125rem;}b{font-weight:600;}strong{font-weight:600;}dt{font-weight:600;}th{font-weight:600;}li{margin-bottom:calc(0.8125rem / 2);}ol li{padding-left:0;}ul li{padding-left:0;}li > ol{margin-left:1.625rem;margin-bottom:calc(0.8125rem / 2);margin-top:calc(0.8125rem / 2);}li > ul{margin-left:1.625rem;margin-bottom:calc(0.8125rem / 2);margin-top:calc(0.8125rem / 2);}blockquote *:last-child{margin-bottom:0;}li *:last-child{margin-bottom:0;}p *:last-child{margin-bottom:0;}li > p{margin-bottom:calc(0.8125rem / 2);}code{font-size:0.85rem;line-height:1.625rem;}kbd{font-size:0.85rem;line-height:1.625rem;}samp{font-size:0.85rem;line-height:1.625rem;}abbr{border-bottom:1px dotted hsla(0,0%,0%,0.5);cursor:help;}acronym{border-bottom:1px dotted hsla(0,0%,0%,0.5);cursor:help;}abbr[title]{border-bottom:1px dotted hsla(0,0%,0%,0.5);cursor:help;text-decoration:none;}thead{text-align:left;}td,th{text-align:left;border-bottom:1px solid hsla(0,0%,0%,0.12);font-feature-settings:"tnum";-moz-font-feature-settings:"tnum";-ms-font-feature-settings:"tnum";-webkit-font-feature-settings:"tnum";padding-left:1.08333rem;padding-right:1.08333rem;padding-top:0.8125rem;padding-bottom:calc(0.8125rem - 1px);}th:first-child,td:first-child{padding-left:0;}th:last-child,td:last-child{padding-right:0;}h3,h4,h5,h6{margin-bottom:0.8125rem;margin-top:1.625rem;}ol,ul{margin-left:2.03125rem;}li>ol,li>ul{margin-left:2.03125rem;}a{color:#4078c0;text-decoration:none;}a:hover,a:active{text-decoration:underline;}</style><style id="gatsby-inlined-css">code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#a67f59;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:100;src:local("Montserrat Thin "),local("Montserrat-Thin"),url(/static/montserrat-latin-100.50d27986.woff2) format("woff2"),url(/static/montserrat-latin-100.5e334eff.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:100;src:local("Montserrat Thin italic"),local("Montserrat-Thinitalic"),url(/static/montserrat-latin-100italic.8c070533.woff2) format("woff2"),url(/static/montserrat-latin-100italic.03e19243.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:200;src:local("Montserrat Extra Light "),local("Montserrat-Extra Light"),url(/static/montserrat-latin-200.4343d3d9.woff2) format("woff2"),url(/static/montserrat-latin-200.f2022ecd.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:200;src:local("Montserrat Extra Light italic"),local("Montserrat-Extra Lightitalic"),url(/static/montserrat-latin-200italic.116c4c4b.woff2) format("woff2"),url(/static/montserrat-latin-200italic.89614a60.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:300;src:local("Montserrat Light "),local("Montserrat-Light"),url(/static/montserrat-latin-300.d2ad295b.woff2) format("woff2"),url(/static/montserrat-latin-300.3a371ee0.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:300;src:local("Montserrat Light italic"),local("Montserrat-Lightitalic"),url(/static/montserrat-latin-300italic.f6b6bf24.woff2) format("woff2"),url(/static/montserrat-latin-300italic.16521668.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:400;src:local("Montserrat Regular "),local("Montserrat-Regular"),url(/static/montserrat-latin-400.240a8444.woff2) format("woff2"),url(/static/montserrat-latin-400.b20cc131.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:400;src:local("Montserrat Regular italic"),local("Montserrat-Regularitalic"),url(/static/montserrat-latin-400italic.86172bb8.woff2) format("woff2"),url(/static/montserrat-latin-400italic.9405e787.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:500;src:local("Montserrat Medium "),local("Montserrat-Medium"),url(/static/montserrat-latin-500.fb8d6b71.woff2) format("woff2"),url(/static/montserrat-latin-500.50825d47.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:500;src:local("Montserrat Medium italic"),local("Montserrat-Mediumitalic"),url(/static/montserrat-latin-500italic.c0a555a4.woff2) format("woff2"),url(/static/montserrat-latin-500italic.635de59c.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:600;src:local("Montserrat SemiBold "),local("Montserrat-SemiBold"),url(/static/montserrat-latin-600.d5615136.woff2) format("woff2"),url(/static/montserrat-latin-600.f300da4f.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:600;src:local("Montserrat SemiBold italic"),local("Montserrat-SemiBolditalic"),url(/static/montserrat-latin-600italic.10f29d13.woff2) format("woff2"),url(/static/montserrat-latin-600italic.2bc37d86.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:700;src:local("Montserrat Bold "),local("Montserrat-Bold"),url(/static/montserrat-latin-700.7d77e1f0.woff2) format("woff2"),url(/static/montserrat-latin-700.81826529.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:700;src:local("Montserrat Bold italic"),local("Montserrat-Bolditalic"),url(/static/montserrat-latin-700italic.1dd2b53f.woff2) format("woff2"),url(/static/montserrat-latin-700italic.c162d257.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:800;src:local("Montserrat ExtraBold "),local("Montserrat-ExtraBold"),url(/static/montserrat-latin-800.d4e7bf86.woff2) format("woff2"),url(/static/montserrat-latin-800.895aadbf.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:800;src:local("Montserrat ExtraBold italic"),local("Montserrat-ExtraBolditalic"),url(/static/montserrat-latin-800italic.fc0cbe44.woff2) format("woff2"),url(/static/montserrat-latin-800italic.b3362875.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:900;src:local("Montserrat Black "),local("Montserrat-Black"),url(/static/montserrat-latin-900.c8bdd772.woff2) format("woff2"),url(/static/montserrat-latin-900.1b99ef78.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:900;src:local("Montserrat Black italic"),local("Montserrat-Blackitalic"),url(/static/montserrat-latin-900italic.cb72c1f9.woff2) format("woff2"),url(/static/montserrat-latin-900italic.b78bb9f8.woff) format("woff")}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:300;src:local("Merriweather Light "),local("Merriweather-Light"),url(/static/merriweather-latin-300.f015f1e9.woff2) format("woff2"),url(/static/merriweather-latin-300.92dfe81b.woff) format("woff")}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:300;src:local("Merriweather Light italic"),local("Merriweather-Lightitalic"),url(/static/merriweather-latin-300italic.7fd86b32.woff2) format("woff2"),url(/static/merriweather-latin-300italic.878b76f5.woff) format("woff")}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:400;src:local("Merriweather Regular "),local("Merriweather-Regular"),url(/static/merriweather-latin-400.12dbf4c0.woff2) format("woff2"),url(/static/merriweather-latin-400.1fffad22.woff) format("woff")}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:400;src:local("Merriweather Regular italic"),local("Merriweather-Regularitalic"),url(/static/merriweather-latin-400italic.1e0d3e81.woff2) format("woff2"),url(/static/merriweather-latin-400italic.de18d4c4.woff) format("woff")}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:700;src:local("Merriweather Bold "),local("Merriweather-Bold"),url(/static/merriweather-latin-700.dc8fec81.woff2) format("woff2"),url(/static/merriweather-latin-700.d7d2ed8e.woff) format("woff")}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:700;src:local("Merriweather Bold italic"),local("Merriweather-Bolditalic"),url(/static/merriweather-latin-700italic.b7b7e5da.woff2) format("woff2"),url(/static/merriweather-latin-700italic.6210a5fc.woff) format("woff")}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:900;src:local("Merriweather Black "),local("Merriweather-Black"),url(/static/merriweather-latin-900.43f870d5.woff2) format("woff2"),url(/static/merriweather-latin-900.8f3806df.woff) format("woff")}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:900;src:local("Merriweather Black italic"),local("Merriweather-Blackitalic"),url(/static/merriweather-latin-900italic.168c1ab2.woff2) format("woff2"),url(/static/merriweather-latin-900italic.ae7778f0.woff) format("woff")}.footnote-backref{font-family:Cambria,Cochin,Georgia,Times,Times New Roman,serif}.footnotes p{display:inline}</style></head><body><div id="___gatsby"><div style="max-width:56.875rem;margin-left:auto;margin-right:auto;padding:2.4375rem 1.21875rem;" data-reactroot="" data-reactid="1" data-react-checksum="-1533733116"><h1 style="font-size:2.82843rem;line-height:3.25rem;margin-bottom:2.4375rem;margin-top:0;" data-reactid="2"><a style="box-shadow:none;text-decoration:none;color:inherit;display:flex;align-items:center;" href="/" data-reactid="3"><span style="width:2em;height:2em;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPCEtLSBDcmVhdG9yOiBDb3JlbERSQVcgWDYgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMzAuNDIxMWluIiBoZWlnaHQ9IjI0LjgwMzJpbiIgdmVyc2lvbj0iMS4xIiBzdHlsZT0ic2hhcGUtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjsgdGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyBpbWFnZS1yZW5kZXJpbmc6b3B0aW1pemVRdWFsaXR5OyBmaWxsLXJ1bGU6ZXZlbm9kZDsgY2xpcC1ydWxlOmV2ZW5vZGQiCnZpZXdCb3g9IjAgMCAzMDQyMSAyNDgwMyIKIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KIDxkZWZzPgogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgIDwhW0NEQVRBWwogICAgLmZpbDAge2ZpbGw6IzUxNTE1MTtmaWxsLXJ1bGU6bm9uemVyb30KICAgXV0+CiAgPC9zdHlsZT4KIDwvZGVmcz4KIDxnIGlkPSJfX3gwMDIzX0xheWVyX3gwMDIwXzEiPgogIDxtZXRhZGF0YSBpZD0iQ29yZWxDb3JwSURfMENvcmVsLUxheWVyIi8+CiAgPGcgaWQ9Il8yODc0MDYwMjQiPgogICA8cGF0aCBjbGFzcz0iZmlsMCIgZD0iTTIwNjUzIDE3MTE2YzQ3NSwtMjU3IDkxMywtNjM1IDEyODcsLTExMTIgNzQ2LC05NTMgMTIyNiwtMjMwMyAxMjI2LC0zODAzIDAsLTExMjYgLTI2OSwtMjE2NyAtNzIwLC0zMDE4IC00NTEsLTg1MyAtMTA4MCwtMTUxMiAtMTc5MywtMTg5NyAtNDc1LC0yNTcgLTk4NywtMzk1IC0xNTI2LC0zOTYgLTY1NiwxIC0xMjcyLDIwOCAtMTgzMiw1ODQgLTEyNCwxMjYgLTQ1NSw0NDcgLTk0Nyw3NzcgLTYxMCw0MDggLTE0NjgsODM5IC0yNDc4LDg0MyAtNTI0LDEgLTEwNTEsLTEyNSAtMTUyMCwtNDE4IC00NzEsLTI5MyAtODc0LC03NDEgLTExODksLTEzMzZsLTYzIC0xMTcgMCAtNTk4NWMyLC0yNDEgLTE0MywtNDQzIC0zNDUsLTUzNWwtMjg5IC01NyAtNTk4MCAwYy0xNjEsMCAtMzAzLDY1IC00MTAsMTczIC0xMDYsMTA4IC0xNzIsMjUzIC0xNzIsNDE5bDAgMTU2MDIgLTMxNjQgMzYxMSAzMTY0IDAgMCAyNzcwYzAsMTY2IDY1LDMxMiAxNzIsNDIwIDEwNiwxMDggMjQ5LDE3MSA0MTAsMTcxbDU5ODAgMCAyOTEgLTU2YzIwMCwtOTQgMzQ1LC0yOTUgMzQzLC01MzVsMCAtNjA0MSA2MyAtMTE2YzMxNiwtNTk4IDcxOCwtMTA0NyAxMTg5LC0xMzM4IDQ3MCwtMjkzIDk5NywtNDE5IDE1MjAsLTQxOSAxMDE0LDQgMTg3Myw0MzcgMjQ4Myw4NDYgNDg5LDMzMSA4MjEsNjUyIDk0NCw3NzkgNTU4LDM3NSAxMTc1LDU4MSAxODMwLDU4MSA1MzksMCAxMDUxLC0xMzcgMTUyNiwtMzk0eiIvPgogICA8cGF0aCBjbGFzcz0iZmlsMCIgZD0iTTI3MDA3IDM5MjJsMCAtMjY4NmMwLC0xNjYgLTY1LC0zMTIgLTE3MSwtNDE5IC0xMDgsLTEwOCAtMjUwLC0xNzIgLTQxMSwtMTczbC0xMzY4OSAwYy0xNTcsMiAtMjkzLDYxIC0zOTksMTYxIC0xMDAsOTYgLTE2NCwyMjQgLTE4MCwzNzFsMyAzOSAwIDU4NTVjNCw4MiAzNSwxNzEgMTI0LDI4NiA4OCwxMTEgMjM1LDIzNCA0MTQsMzM3IDM1NywyMTIgODQ4LDM0MiAxMTcyLDMzOCA2NzksNCAxMzU1LC0zMDcgMTg2MywtNjQ3IDUwNCwtMzM0IDgzNCwtNjgxIDgzOSwtNjg5bDQwIC00MyA0OCAtMzRjNzIyLC00OTkgMTU2OSwtNzkxIDI0NjcsLTc5MCA3MjMsLTEgMTQxNCwxODkgMjAzMCw1MjIgNjE4LDMzNSAxMTY0LDgxMiAxNjE4LDEzOTIgOTA3LDExNjEgMTQ0OSwyNzMyIDE0NTAsNDQ1OCAwLDEyOTMgLTMwNiwyNTAxIC04NDEsMzUxMyAtNTM1LDEwMTIgLTEzMDAsMTgzNCAtMjIyNywyMzM2IC02MTcsMzM0IC0xMzA4LDUyMyAtMjAzMCw1MjMgLTg5OSwxIC0xNzQ1LC0yOTIgLTI0NjcsLTc5MWwtNTAgLTM0IC00MCAtNDMgLTEgLTIgLTcgLTggLTM5IC00MGMtMzUsLTM1IC04OSwtODggLTE2MSwtMTUzIC0xNDEsLTEyNyAtMzQ5LC0zMDAgLTYwMywtNDcxIC01MDgsLTM0NSAtMTE5NiwtNjY3IC0xODg5LC02NjQgLTI4MCwwIC02MTAsNDQgLTg5NiwxNDEgLTI4OCw5NyAtNTE5LDI0NiAtNjUxLDQyMCAtODcsMTE0IC0xNDMsMjQxIC0xNjUsNDIwbDAgNTg5MiAtMiAyMSAtMiAyM2MxNSwxNDUgODAsMjczIDE3NywzNjggMTA0LDk4IDIzNiwxNTcgMzg5LDE1OWwxMzcwMyAwYzE2MSwwIDMwMywtNjMgNDExLC0xNzEgMTA2LC0xMDggMTcxLC0yNTQgMTcxLC00MjBsMCAtMTU3NTQgMzI0MSAtMzU0MyAtMzI0MSAweiIvPgogIDwvZz4KIDwvZz4KPC9zdmc+Cg==);background-size:contain;background-position:50%;background-repeat:no-repeat;" data-reactid="4"></span><!-- react-text: 5 -->Engineering at MindLink<!-- /react-text --></a></h1><div data-reactid="6"><!-- react-empty: 7 --><div data-reactid="8"><h3 style="margin-bottom:0.40625rem;" data-reactid="9"><a style="box-shadow:none;" href="/rebuilding-a-performant-emoji-picker-in-react-with-hooks" data-reactid="10">Rebuilding a performant emoji picker in React with hooks</a></h3><p data-reactid="11">Before I start, we didn’t really want to have to do this. There are a couple of really good projects out there that offer an emoji picker…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="12"><div style="display:flex;align-items:center;" data-reactid="13"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="14"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="15"><img alt="Luke Terry" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M0 4l1 4v17l-1 8 1 7 1 2-1 1-1 9v8h11c11 0 11 0 11-2l-2-9c0-6 0-6 2-5l5 1 4-1h-4c-4 0-8-5-11-12-2-6-3-9-1-9 4 0 5 0 4-1l-2-1c-1 1-2 0-2-2-1-4 2-9 5-10l12 1 3 1c1-1 2 2 2 3l1 5c2 4 2 4 2 2 0-3 0-3 2-1s-1 12-3 9l-1 2c0 3-5 11-7 12v1l4-3 3-4 4 4c5 6 8 13 9 18l5 1h5V34a171 171 0 0 0-1-27l1-3V0H0v4m0 12c0 3 1 4 1 2v-6c-1-1-1 0-1 4m0 17c0 4 1 6 1 3v-8l-1 5m0 21c0 4 1 5 1 3v-6c0-2-1-1-1 3' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="16"/><noscript data-reactid="17"><img width="30" height="30" src="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg" srcset="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg 1x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-ad4d5.jpg 1.5x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-454f9.jpg 2x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-f8c68.jpg 3x" alt="Luke Terry" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="18">Luke Terry</span></div><span style="display:block;" data-reactid="19"><!-- react-text: 20 --> on <!-- /react-text --><!-- react-text: 21 -->23 May, 2019<!-- /react-text --></span></div></div><div data-reactid="22"><h3 style="margin-bottom:0.40625rem;" data-reactid="23"><a style="box-shadow:none;" href="/automate-your-memory-profiling-now" data-reactid="24">Automate your memory profiling now</a></h3><p data-reactid="25">MindLink’s core product is designed to be a long running and stable server brokering between clients and chat systems. Stability is…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="26"><div style="display:flex;align-items:center;" data-reactid="27"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="28"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="29"><img alt="Luke Terry" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M0 4l1 4v17l-1 8 1 7 1 2-1 1-1 9v8h11c11 0 11 0 11-2l-2-9c0-6 0-6 2-5l5 1 4-1h-4c-4 0-8-5-11-12-2-6-3-9-1-9 4 0 5 0 4-1l-2-1c-1 1-2 0-2-2-1-4 2-9 5-10l12 1 3 1c1-1 2 2 2 3l1 5c2 4 2 4 2 2 0-3 0-3 2-1s-1 12-3 9l-1 2c0 3-5 11-7 12v1l4-3 3-4 4 4c5 6 8 13 9 18l5 1h5V34a171 171 0 0 0-1-27l1-3V0H0v4m0 12c0 3 1 4 1 2v-6c-1-1-1 0-1 4m0 17c0 4 1 6 1 3v-8l-1 5m0 21c0 4 1 5 1 3v-6c0-2-1-1-1 3' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="30"/><noscript data-reactid="31"><img width="30" height="30" src="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg" srcset="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg 1x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-ad4d5.jpg 1.5x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-454f9.jpg 2x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-f8c68.jpg 3x" alt="Luke Terry" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="32">Luke Terry</span></div><span style="display:block;" data-reactid="33"><!-- react-text: 34 --> on <!-- /react-text --><!-- react-text: 35 -->17 April, 2019<!-- /react-text --></span></div></div><div data-reactid="36"><h3 style="margin-bottom:0.40625rem;" data-reactid="37"><a style="box-shadow:none;" href="/hybrid-electron-application-deployment-in-the-enterprise" data-reactid="38">Hybrid Electron application deployment in the enterprise</a></h3><p data-reactid="39">Enterprises love control, that usually means they’re only going to install your software if there’s an MSI package that they can deploy…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="40"><div style="display:flex;align-items:center;" data-reactid="41"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="42"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="43"><img alt="Luke Terry" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M0 4l1 4v17l-1 8 1 7 1 2-1 1-1 9v8h11c11 0 11 0 11-2l-2-9c0-6 0-6 2-5l5 1 4-1h-4c-4 0-8-5-11-12-2-6-3-9-1-9 4 0 5 0 4-1l-2-1c-1 1-2 0-2-2-1-4 2-9 5-10l12 1 3 1c1-1 2 2 2 3l1 5c2 4 2 4 2 2 0-3 0-3 2-1s-1 12-3 9l-1 2c0 3-5 11-7 12v1l4-3 3-4 4 4c5 6 8 13 9 18l5 1h5V34a171 171 0 0 0-1-27l1-3V0H0v4m0 12c0 3 1 4 1 2v-6c-1-1-1 0-1 4m0 17c0 4 1 6 1 3v-8l-1 5m0 21c0 4 1 5 1 3v-6c0-2-1-1-1 3' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="44"/><noscript data-reactid="45"><img width="30" height="30" src="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg" srcset="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg 1x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-ad4d5.jpg 1.5x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-454f9.jpg 2x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-f8c68.jpg 3x" alt="Luke Terry" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="46">Luke Terry</span></div><span style="display:block;" data-reactid="47"><!-- react-text: 48 --> on <!-- /react-text --><!-- react-text: 49 -->14 March, 2019<!-- /react-text --></span></div></div><div data-reactid="50"><h3 style="margin-bottom:0.40625rem;" data-reactid="51"><a style="box-shadow:none;" href="/the-symphony-london-hackathon-2018" data-reactid="52">The Symphony London Hackathon 2018</a></h3><p data-reactid="53">MindLink entered it’s first hackathon and placed second with the Town Hall bot. This post is a brief review of how it went! TL;DR MindLink…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="54"><div style="display:flex;align-items:center;" data-reactid="55"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="56"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="57"><img alt="Luke Terry" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M0 4l1 4v17l-1 8 1 7 1 2-1 1-1 9v8h11c11 0 11 0 11-2l-2-9c0-6 0-6 2-5l5 1 4-1h-4c-4 0-8-5-11-12-2-6-3-9-1-9 4 0 5 0 4-1l-2-1c-1 1-2 0-2-2-1-4 2-9 5-10l12 1 3 1c1-1 2 2 2 3l1 5c2 4 2 4 2 2 0-3 0-3 2-1s-1 12-3 9l-1 2c0 3-5 11-7 12v1l4-3 3-4 4 4c5 6 8 13 9 18l5 1h5V34a171 171 0 0 0-1-27l1-3V0H0v4m0 12c0 3 1 4 1 2v-6c-1-1-1 0-1 4m0 17c0 4 1 6 1 3v-8l-1 5m0 21c0 4 1 5 1 3v-6c0-2-1-1-1 3' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="58"/><noscript data-reactid="59"><img width="30" height="30" src="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg" srcset="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg 1x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-ad4d5.jpg 1.5x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-454f9.jpg 2x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-f8c68.jpg 3x" alt="Luke Terry" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="60">Luke Terry</span></div><span style="display:block;" data-reactid="61"><!-- react-text: 62 --> on <!-- /react-text --><!-- react-text: 63 -->01 October, 2018<!-- /react-text --></span></div></div><div data-reactid="64"><h3 style="margin-bottom:0.40625rem;" data-reactid="65"><a style="box-shadow:none;" href="/visualising-skype-for-business-persistent-chat-data" data-reactid="66">Visualising Skype for Business Persistent chat data</a></h3><p data-reactid="67">Persistent Chat allows the Skype For Business users to create topic-based discussion rooms that persist over time. This feature allows users…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="68"><div style="display:flex;align-items:center;" data-reactid="69"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="70"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="71"><img alt="Gonçalo Ferreira" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M2 1C1 4 2 26 3 27l1 2c1 2 6 4 8 4l1-4 1-2 5-1h4c0 2 2 1 2-2 1-2 1-2 3-1l3 2c1 2 3-7 3-10-1-3-1-3 10-2 2 0 3 1 5 5l4 6c1 1 3-21 2-22C54 0 2-1 2 1m22 11l-1 1 1 2c2 2 9 3 7 1-1-1-2-2-3-1-2 0-2 0-2-2v-2l-2 1m3 21c-2 0-2 1-1 3v2c-2 1-2 1-1 2v1c-1 0-4-2-4-4l-1-1-1 1v3c-2 3 0 6 7 10l5 4h-9l-8 1v-6c0-5 0-5-3-5-1 0-2 0-1 1 3 0 2 2 0 2l-2 1v1l1 2 2 3 1 4c0 2 1 2 9 2l11-1h8c-1 1 1 1 5 1 6 0 6 0 7-3 0-1 0-3-2-4v-2c3 0 4-11 1-13h-7l-5 1c-3 0-4 0-4 3l1 2 2 2c1 2 1 2-1 2s-3-2-3-5l-2-5-1-3c3-2 0-3-4-2m0 8c0 3 1 5 3 5 2-1 2-1 1-3v-3l-2-1c-2-1-2 0-2 2' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="72"/><noscript data-reactid="73"><img width="30" height="30" src="/static/goncalo-a48a10a6091da477f7b38b45e4556184-ead98.jpg" srcset="/static/goncalo-a48a10a6091da477f7b38b45e4556184-ead98.jpg 1x,
/static/goncalo-a48a10a6091da477f7b38b45e4556184-ad4d5.jpg 1.5x,
/static/goncalo-a48a10a6091da477f7b38b45e4556184-454f9.jpg 2x,
/static/goncalo-a48a10a6091da477f7b38b45e4556184-f8c68.jpg 3x" alt="Gonçalo Ferreira" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="74">Gonçalo Ferreira</span></div><span style="display:block;" data-reactid="75"><!-- react-text: 76 --> on <!-- /react-text --><!-- react-text: 77 -->09 August, 2018<!-- /react-text --></span></div></div><div data-reactid="78"><h3 style="margin-bottom:0.40625rem;" data-reactid="79"><a style="box-shadow:none;" href="/getting-started-with-python-and-the-mindlink-api" data-reactid="80">Getting started with Python and the MindLink API.</a></h3><p data-reactid="81">Today, we’ll have a look at how I started coding in Python to work with the MindLink API. Although Python is an extremely popular language…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="82"><div style="display:flex;align-items:center;" data-reactid="83"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="84"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="85"><img alt="Dimitri Fadda" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M16 2c0 9 1 15 7 21l3 4c0 2-1 4-3 4-5 0-13 4-17 7-3 4-3 4-4 11 0 11-2 11 29 11 30 0 28 0 28-11-1-6-1-7-4-11-4-3-12-7-17-7-2 0-3-2-3-4l3-4c6-6 7-12 7-21 0-2 0-2-14-2-15 0-15 0-15 2M0 51l1 3v-7l-1 4' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="86"/><noscript data-reactid="87"><img width="30" height="30" src="/static/default-788e71c2bb40c6a516ea06e9a06387eb-125d2.png" srcset="/static/default-788e71c2bb40c6a516ea06e9a06387eb-125d2.png 1x" alt="Dimitri Fadda" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="88">Dimitri Fadda</span></div><span style="display:block;" data-reactid="89"><!-- react-text: 90 --> on <!-- /react-text --><!-- react-text: 91 -->23 July, 2018<!-- /react-text --></span></div></div><div data-reactid="92"><h3 style="margin-bottom:0.40625rem;" data-reactid="93"><a style="box-shadow:none;" href="/parallelizing-our-ci-tests" data-reactid="94">Parallelizing our CI tests</a></h3><p data-reactid="95">In this second “improving our CI tests” blog we’ll complete our journey by: Enabling parallel NUnit test execution at the text-fixture…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="96"><div style="display:flex;align-items:center;" data-reactid="97"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="98"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="99"><img alt="Ben Osborne" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M16 2c0 9 1 15 7 21l3 4c0 2-1 4-3 4-5 0-13 4-17 7-3 4-3 4-4 11 0 11-2 11 29 11 30 0 28 0 28-11-1-6-1-7-4-11-4-3-12-7-17-7-2 0-3-2-3-4l3-4c6-6 7-12 7-21 0-2 0-2-14-2-15 0-15 0-15 2M0 51l1 3v-7l-1 4' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="100"/><noscript data-reactid="101"><img width="30" height="30" src="/static/default-788e71c2bb40c6a516ea06e9a06387eb-125d2.png" srcset="/static/default-788e71c2bb40c6a516ea06e9a06387eb-125d2.png 1x" alt="Ben Osborne" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="102">Ben Osborne</span></div><span style="display:block;" data-reactid="103"><!-- react-text: 104 --> on <!-- /react-text --><!-- react-text: 105 -->05 July, 2018<!-- /react-text --></span></div></div><div data-reactid="106"><h3 style="margin-bottom:0.40625rem;" data-reactid="107"><a style="box-shadow:none;" href="/mixin-that-memory-leak" data-reactid="108">Mixin that memory leak</a></h3><p data-reactid="109">This is a story of how, without much effort, mixins can give you memory leaks all over your shiny stuff. TL;DR Mixins share the properties…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="110"><div style="display:flex;align-items:center;" data-reactid="111"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="112"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="113"><img alt="Luke Terry" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M0 4l1 4v17l-1 8 1 7 1 2-1 1-1 9v8h11c11 0 11 0 11-2l-2-9c0-6 0-6 2-5l5 1 4-1h-4c-4 0-8-5-11-12-2-6-3-9-1-9 4 0 5 0 4-1l-2-1c-1 1-2 0-2-2-1-4 2-9 5-10l12 1 3 1c1-1 2 2 2 3l1 5c2 4 2 4 2 2 0-3 0-3 2-1s-1 12-3 9l-1 2c0 3-5 11-7 12v1l4-3 3-4 4 4c5 6 8 13 9 18l5 1h5V34a171 171 0 0 0-1-27l1-3V0H0v4m0 12c0 3 1 4 1 2v-6c-1-1-1 0-1 4m0 17c0 4 1 6 1 3v-8l-1 5m0 21c0 4 1 5 1 3v-6c0-2-1-1-1 3' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="114"/><noscript data-reactid="115"><img width="30" height="30" src="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg" srcset="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg 1x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-ad4d5.jpg 1.5x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-454f9.jpg 2x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-f8c68.jpg 3x" alt="Luke Terry" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="116">Luke Terry</span></div><span style="display:block;" data-reactid="117"><!-- react-text: 118 --> on <!-- /react-text --><!-- react-text: 119 -->05 July, 2018<!-- /react-text --></span></div></div><div data-reactid="120"><h3 style="margin-bottom:0.40625rem;" data-reactid="121"><a style="box-shadow:none;" href="/improving-our-ci-tests" data-reactid="122">Improving our CI tests</a></h3><p data-reactid="123">This is the story of how we: Enabled parallel NUnit test execution Migrated our CI test stack to a reproduceable and self-contained…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="124"><div style="display:flex;align-items:center;" data-reactid="125"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="126"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="127"><img alt="Ben Osborne" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M16 2c0 9 1 15 7 21l3 4c0 2-1 4-3 4-5 0-13 4-17 7-3 4-3 4-4 11 0 11-2 11 29 11 30 0 28 0 28-11-1-6-1-7-4-11-4-3-12-7-17-7-2 0-3-2-3-4l3-4c6-6 7-12 7-21 0-2 0-2-14-2-15 0-15 0-15 2M0 51l1 3v-7l-1 4' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="128"/><noscript data-reactid="129"><img width="30" height="30" src="/static/default-788e71c2bb40c6a516ea06e9a06387eb-125d2.png" srcset="/static/default-788e71c2bb40c6a516ea06e9a06387eb-125d2.png 1x" alt="Ben Osborne" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="130">Ben Osborne</span></div><span style="display:block;" data-reactid="131"><!-- react-text: 132 --> on <!-- /react-text --><!-- react-text: 133 -->28 June, 2018<!-- /react-text --></span></div></div><div data-reactid="134"><h3 style="margin-bottom:0.40625rem;" data-reactid="135"><a style="box-shadow:none;" href="/end-to-end-encryption-with-the-signal-protocol" data-reactid="136">End-To-End Encryption with the Signal Protocol</a></h3><p data-reactid="137">What is the Signal Protocol? The Signal Protocol (formerly TextSecure Protocol) defines a cryptographic encryption protocol for secure end…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="138"><div style="display:flex;align-items:center;" data-reactid="139"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="140"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="141"><img alt="Jamie Matthews" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M27 8c-4 5-5 9-3 13v5h5v2c1 2 0 2-2 2l-2-1h-1l-1-1-2-3H9c-6 0-7 0-8 2s-1 2 3 2h5c2 0 3 2 1 2-1 1 0 1 1 1l2-1 5-1c5 0 6 0 6 2 0 3 0 3-14 7-8 2-10 4-10 14v7h16c8 0 15 0 14-1v-1c0-2 2-1 2 1l14 1h15v-8l-1-7-1-3-1-2c-1 1-2 0-2-1l-5-2-6-3-2-1 4 7v3c0 2-3 1-3-2 0-1-1-1-2 1-2 3-5 4-3 1v-2l-1-3c0-3-2-6-4-6l-1-1c-1-2 0-2 2-3l4-2c1-2 2-2 3 1l3 3 1 1h2c0-2 1-2 1-1l1 1c1-1 0-4-1-4-1 1-5-2-5-4l-2-1c-2 0-2 0-1-1s1-1-1-1c-2 1-3 0-4-1l-3-2-1-1-1-2v-2c1 0 2-1 2-3 0-4-3-4-6-1m8 1c-1 5 3 6 7 4V9c-3-3-7-3-7 0m17 20c-1 2-1 2 1 2 3 1 7 0 7-2s-5-2-8 0M0 53l1 4v-8l-1 4m32-6l1 9 1 2h2v-3l1-5c2-3 2-3 0-3h-5' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="142"/><noscript data-reactid="143"><img width="30" height="30" src="/static/jamie-ef845734f9f6a26e3ff77046f81ed650-ead98.jpg" srcset="/static/jamie-ef845734f9f6a26e3ff77046f81ed650-ead98.jpg 1x,
/static/jamie-ef845734f9f6a26e3ff77046f81ed650-ad4d5.jpg 1.5x,
/static/jamie-ef845734f9f6a26e3ff77046f81ed650-454f9.jpg 2x,
/static/jamie-ef845734f9f6a26e3ff77046f81ed650-f8c68.jpg 3x" alt="Jamie Matthews" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="144">Jamie Matthews</span></div><span style="display:block;" data-reactid="145"><!-- react-text: 146 --> on <!-- /react-text --><!-- react-text: 147 -->20 June, 2018<!-- /react-text --></span></div></div><div data-reactid="148"><h3 style="margin-bottom:0.40625rem;" data-reactid="149"><a style="box-shadow:none;" href="/creating-a-private-ethereum-blockchain-and-using-it-as-a-model" data-reactid="150">Creating a private Ethereum blockchain and using it as a model</a></h3><p data-reactid="151">Recently there’s been a lot of fascination surrounding blockchains, and how they can be used to improve long-standing industry technologies…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="152"><div style="display:flex;align-items:center;" data-reactid="153"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="154"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="155"><img alt="Daniel Dean" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M16 2c0 9 1 15 7 21l3 4c0 2-1 4-3 4-5 0-13 4-17 7-3 4-3 4-4 11 0 11-2 11 29 11 30 0 28 0 28-11-1-6-1-7-4-11-4-3-12-7-17-7-2 0-3-2-3-4l3-4c6-6 7-12 7-21 0-2 0-2-14-2-15 0-15 0-15 2M0 51l1 3v-7l-1 4' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="156"/><noscript data-reactid="157"><img width="30" height="30" src="/static/default-788e71c2bb40c6a516ea06e9a06387eb-125d2.png" srcset="/static/default-788e71c2bb40c6a516ea06e9a06387eb-125d2.png 1x" alt="Daniel Dean" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="158">Daniel Dean</span></div><span style="display:block;" data-reactid="159"><!-- react-text: 160 --> on <!-- /react-text --><!-- react-text: 161 -->06 June, 2018<!-- /react-text --></span></div></div><div data-reactid="162"><h3 style="margin-bottom:0.40625rem;" data-reactid="163"><a style="box-shadow:none;" href="/custom-content-in-a-skype-for-business-conversation" data-reactid="164">Custom content in a Skype for Business conversation</a></h3><p data-reactid="165">At MindLink we like to take current trends in messaging and see if we can get more out of Skype for Business (SfB) by supporting them. This…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="166"><div style="display:flex;align-items:center;" data-reactid="167"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="168"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="169"><img alt="Luke Terry" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M0 4l1 4v17l-1 8 1 7 1 2-1 1-1 9v8h11c11 0 11 0 11-2l-2-9c0-6 0-6 2-5l5 1 4-1h-4c-4 0-8-5-11-12-2-6-3-9-1-9 4 0 5 0 4-1l-2-1c-1 1-2 0-2-2-1-4 2-9 5-10l12 1 3 1c1-1 2 2 2 3l1 5c2 4 2 4 2 2 0-3 0-3 2-1s-1 12-3 9l-1 2c0 3-5 11-7 12v1l4-3 3-4 4 4c5 6 8 13 9 18l5 1h5V34a171 171 0 0 0-1-27l1-3V0H0v4m0 12c0 3 1 4 1 2v-6c-1-1-1 0-1 4m0 17c0 4 1 6 1 3v-8l-1 5m0 21c0 4 1 5 1 3v-6c0-2-1-1-1 3' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="170"/><noscript data-reactid="171"><img width="30" height="30" src="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg" srcset="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg 1x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-ad4d5.jpg 1.5x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-454f9.jpg 2x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-f8c68.jpg 3x" alt="Luke Terry" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="172">Luke Terry</span></div><span style="display:block;" data-reactid="173"><!-- react-text: 174 --> on <!-- /react-text --><!-- react-text: 175 -->21 May, 2018<!-- /react-text --></span></div></div><div data-reactid="176"><h3 style="margin-bottom:0.40625rem;" data-reactid="177"><a style="box-shadow:none;" href="/leveraging-rasa-to-build-on-premise-intelligent-chat-bots" data-reactid="178">Leveraging Rasa to build on-premise intelligent chat bots</a></h3><p data-reactid="179">In this post we will explain and demonstrate how to leverage Rasa to develop intelligent chatbots and securely deploy them on premise…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="180"><div style="display:flex;align-items:center;" data-reactid="181"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="182"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="183"><img alt="Niccolo Terreri" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M24 4l-1 4-1-3-1-3H0v6c0 3 0 5 1 4 1-2 7-3 7-1H7l-3 1-2 1v3l-1 3-1 12v12l5-1c4 0 4 0 4 2v2h1l2-3h1c0 3 15 2 16-2l2-1 1 1-1 6-1 4 1-3 2-6c0-3 0-3 1-1s4 5 9 7c7 3 8 3 9-1 2-3 0-4-8-4-2 0-3 0-2-1l1-1h3c3-1 3-2 3-4 0-3-1-4-7-4s-7-1-7-3l1-3 1 2c0 3 0 3 3 2 3-2 2-9-2-9l-1-1 6-1c7-1 7-2 4-6-1-2-3-2-6-2l-7-1 3-1c3 0 3 0 3-4-1-4-1-4-6-4l-7-1c-1 0-2 0-3 3m19-2v8l1-1h7c3 1 6-3 5-5s-9-4-13-2m16 1v5c1 2 1-2 1-5-1-2-1-2-1 0m-6 9c-3 2 1 8 5 8 2 0 2-1 2-4s0-4-2-4l-3-1-2 1m-36 1l-1 2-1 1-1 2c-1 1 0 2 2 2 4 0 5 1 5 3s-7 3-7 1h-1v3l1 2c-2 2 0 5 2 4h2l2-2c1-2 1-2 1 0s1 3 3 0h1l2 2 2 2v3l1-3 2-2 1-5c0-4-1-6-2-3-1 2-6 2-7 1l1-3c0-2 6-3 7-1h1l-1-2v-1c3 0 1-2-5-4-6-3-8-3-10-2m28 11c-2 1-1 4 1 5 1 2 6 2 8 1l3-1c2 0 2-1 2-3 0-1 0-2-1-1l-1-1c1-1-11-2-12 0m7 10l-1 3 1 3 5 1c3 0 3 0 3-4 0-3-1-4-3-4l-5 1m-36 2c0 3 10 4 11 1l-1-1H16m38 11c0 3 1 4 3 4 3 0 3 0 3-3 0-4 0-4-3-4s-3 0-3 3m0 7l2 2 1 2 2 2 1-3c0-4 0-4-3-4l-3 1' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="184"/><noscript data-reactid="185"><img width="30" height="30" src="/static/niccolo-26a188bd01f250cfcc08e18338c308e7-ead98.jpg" srcset="/static/niccolo-26a188bd01f250cfcc08e18338c308e7-ead98.jpg 1x,
/static/niccolo-26a188bd01f250cfcc08e18338c308e7-ad4d5.jpg 1.5x,
/static/niccolo-26a188bd01f250cfcc08e18338c308e7-454f9.jpg 2x,
/static/niccolo-26a188bd01f250cfcc08e18338c308e7-f8c68.jpg 3x" alt="Niccolo Terreri" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="186">Niccolo Terreri</span></div><span style="display:block;" data-reactid="187"><!-- react-text: 188 --> on <!-- /react-text --><!-- react-text: 189 -->18 May, 2018<!-- /react-text --></span></div></div><div data-reactid="190"><h3 style="margin-bottom:0.40625rem;" data-reactid="191"><a style="box-shadow:none;" href="/why-draftjs-doesnt-work-on-android" data-reactid="192">Why DraftJS doesn't work on Android</a></h3><p data-reactid="193">DraftJS is a popular open source rich text editing library for React maintained by Facebook. It allows developers to decorate input text as…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="194"><div style="display:flex;align-items:center;" data-reactid="195"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="196"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="197"><img alt="Niccolo Terreri" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M24 4l-1 4-1-3-1-3H0v6c0 3 0 5 1 4 1-2 7-3 7-1H7l-3 1-2 1v3l-1 3-1 12v12l5-1c4 0 4 0 4 2v2h1l2-3h1c0 3 15 2 16-2l2-1 1 1-1 6-1 4 1-3 2-6c0-3 0-3 1-1s4 5 9 7c7 3 8 3 9-1 2-3 0-4-8-4-2 0-3 0-2-1l1-1h3c3-1 3-2 3-4 0-3-1-4-7-4s-7-1-7-3l1-3 1 2c0 3 0 3 3 2 3-2 2-9-2-9l-1-1 6-1c7-1 7-2 4-6-1-2-3-2-6-2l-7-1 3-1c3 0 3 0 3-4-1-4-1-4-6-4l-7-1c-1 0-2 0-3 3m19-2v8l1-1h7c3 1 6-3 5-5s-9-4-13-2m16 1v5c1 2 1-2 1-5-1-2-1-2-1 0m-6 9c-3 2 1 8 5 8 2 0 2-1 2-4s0-4-2-4l-3-1-2 1m-36 1l-1 2-1 1-1 2c-1 1 0 2 2 2 4 0 5 1 5 3s-7 3-7 1h-1v3l1 2c-2 2 0 5 2 4h2l2-2c1-2 1-2 1 0s1 3 3 0h1l2 2 2 2v3l1-3 2-2 1-5c0-4-1-6-2-3-1 2-6 2-7 1l1-3c0-2 6-3 7-1h1l-1-2v-1c3 0 1-2-5-4-6-3-8-3-10-2m28 11c-2 1-1 4 1 5 1 2 6 2 8 1l3-1c2 0 2-1 2-3 0-1 0-2-1-1l-1-1c1-1-11-2-12 0m7 10l-1 3 1 3 5 1c3 0 3 0 3-4 0-3-1-4-3-4l-5 1m-36 2c0 3 10 4 11 1l-1-1H16m38 11c0 3 1 4 3 4 3 0 3 0 3-3 0-4 0-4-3-4s-3 0-3 3m0 7l2 2 1 2 2 2 1-3c0-4 0-4-3-4l-3 1' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="198"/><noscript data-reactid="199"><img width="30" height="30" src="/static/niccolo-26a188bd01f250cfcc08e18338c308e7-ead98.jpg" srcset="/static/niccolo-26a188bd01f250cfcc08e18338c308e7-ead98.jpg 1x,
/static/niccolo-26a188bd01f250cfcc08e18338c308e7-ad4d5.jpg 1.5x,
/static/niccolo-26a188bd01f250cfcc08e18338c308e7-454f9.jpg 2x,
/static/niccolo-26a188bd01f250cfcc08e18338c308e7-f8c68.jpg 3x" alt="Niccolo Terreri" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="200">Niccolo Terreri</span></div><span style="display:block;" data-reactid="201"><!-- react-text: 202 --> on <!-- /react-text --><!-- react-text: 203 -->22 April, 2018<!-- /react-text --></span></div></div><div data-reactid="204"><h3 style="margin-bottom:0.40625rem;" data-reactid="205"><a style="box-shadow:none;" href="/publishing-to-github-pages-from-tfs" data-reactid="206">Publishing to GitHub Pages from TFS</a></h3><p data-reactid="207">Recently we decided it was time to publish our own blog to showcase some of what our talented engineers do and find interesting. To do this…</p><div style="display:flex;align-items:center;color:#555555;" data-reactid="208"><div style="display:flex;align-items:center;" data-reactid="209"><div class=" gatsby-image-outer-wrapper" style="position:relative;" data-reactid="210"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:30px;height:30px;margin-right:0.8125rem;margin-bottom:0;vertical-align:top;flex:none;" data-reactid="211"><img alt="Luke Terry" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60' version='1'%3E%3Crect width='100%25' height='100%25' fill='%23f6f2f8'/%3E%3Cpath d='M0 4l1 4v17l-1 8 1 7 1 2-1 1-1 9v8h11c11 0 11 0 11-2l-2-9c0-6 0-6 2-5l5 1 4-1h-4c-4 0-8-5-11-12-2-6-3-9-1-9 4 0 5 0 4-1l-2-1c-1 1-2 0-2-2-1-4 2-9 5-10l12 1 3 1c1-1 2 2 2 3l1 5c2 4 2 4 2 2 0-3 0-3 2-1s-1 12-3 9l-1 2c0 3-5 11-7 12v1l4-3 3-4 4 4c5 6 8 13 9 18l5 1h5V34a171 171 0 0 0-1-27l1-3V0H0v4m0 12c0 3 1 4 1 2v-6c-1-1-1 0-1 4m0 17c0 4 1 6 1 3v-8l-1 5m0 21c0 4 1 5 1 3v-6c0-2-1-1-1 3' fill='%23e0d6eb' fill-rule='evenodd'/%3E%3C/svg%3E" style="position:absolute;top:0;left:0;transition:opacity 0.5s;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:0.25s;border-radius:100%;" data-reactid="212"/><noscript data-reactid="213"><img width="30" height="30" src="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg" srcset="/static/luke-b4696583a30eac95175e7eb6a8becde1-ead98.jpg 1x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-ad4d5.jpg 1.5x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-454f9.jpg 2x,
/static/luke-b4696583a30eac95175e7eb6a8becde1-f8c68.jpg 3x" alt="Luke Terry" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></noscript></div></div><span style="flex:1;" data-reactid="214">Luke Terry</span></div><span style="display:block;" data-reactid="215"><!-- react-text: 216 --> on <!-- /react-text --><!-- react-text: 217 -->13 April, 2018<!-- /react-text --></span></div></div></div><span style="display:block;clear:both;" data-reactid="218"> </span></div></div><script id="webpack-manifest">/*<![CDATA[*/window.webpackManifest={"231608221292675":"app-26863e7bf611f788191d.js","99219681209289":"component---node-modules-gatsby-plugin-offline-app-shell-js-5c4c5a0f7af9dc69d6d7.js","107818501498521":"component---src-templates-blog-post-js-68f7aee6b59dd86a2cd6.js","162898551421021":"component---src-pages-404-js-4503918ea3a16cfcdb75.js","35783957827783":"component---src-pages-index-js-1bc116d76406ca9e28a9.js","60335399758886":"path----93acfddfa4afcd4dbca4.js","210333531512890":"path---offline-plugin-app-shell-fallback-a0e39f21c11f6a62c5ab.js","68667106949601":"path---rebuilding-a-performant-emoji-picker-in-react-with-hooks-66d72e3d1537f7b9a899.js","19834296486214":"path---automate-your-memory-profiling-now-a154ed1b362e66f4c7ff.js","125210007625489":"path---hybrid-electron-application-deployment-in-the-enterprise-2e2e43c2843eaeed9acf.js","177698804942370":"path---the-symphony-london-hackathon-2018-55ccd2f6ae1bf77baa50.js","246421931260619":"path---visualising-skype-for-business-persistent-chat-data-3f22fe6a3ff5ab6ac526.js","78213438093281":"path---getting-started-with-python-and-the-mindlink-api-da363fcaf10d159728c6.js","210078362639055":"path---parallelizing-our-ci-tests-8b248f85db3cf194020e.js","175624018417515":"path---mixin-that-memory-leak-3ca758ad07028cff78d0.js","276876481256213":"path---improving-our-ci-tests-2d7e076fb8d77e713893.js","470145679688":"path---end-to-end-encryption-with-the-signal-protocol-aee928a050b72560df2c.js","3348540548791":"path---creating-a-private-ethereum-blockchain-and-using-it-as-a-model-09e64e0a368195b557bf.js","158181132903248":"path---custom-content-in-a-skype-for-business-conversation-623d929d52365a5dfb5f.js","10959833468015":"path---leveraging-rasa-to-build-on-premise-intelligent-chat-bots-a194b390757ee6112804.js","128816527069367":"path---why-draftjs-doesnt-work-on-android-6e9bc61c1e1cd0c8f3bf.js","242332654075282":"path---publishing-to-github-pages-from-tfs-26e56d3b26f84fb2c26b.js","254022195166212":"path---404-a0e39f21c11f6a62c5ab.js","142629428675168":"path---index-1a1f794e0d995be43089.js","178698757827068":"path---404-html-a0e39f21c11f6a62c5ab.js","114276838955818":"component---src-layouts-index-js-fa783bea929f421f7a9e.js"}/*]]>*/</script><script>
if(true) {
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
}
if (typeof ga === "function") {
ga('create', 'undefined', 'auto');
}
</script><script>/*<![CDATA[*/!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var s,a,c,d=[],i=e.scripts[0],o="onreadystatechange",f="readyState";s=r.shift();)a=e.createElement(t),"async"in i?(a.async=!1,e.head.appendChild(a)):i[f]?(d.push(a),a[o]=n):e.write("<"+t+' src="'+s+'" defer></'+t+">"),a.src=s}(document,"script",["/commons-d27b2d4800120666d7b5.js","/app-26863e7bf611f788191d.js","/path---index-1a1f794e0d995be43089.js","/component---src-pages-index-js-1bc116d76406ca9e28a9.js","/component---src-layouts-index-js-fa783bea929f421f7a9e.js"])/*]]>*/</script></body></html>