<!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"/><style data-href="/styles.80571bff72bce635e181.css">.skills>.section-container{display:flex;flex-wrap:wrap;justify-content:space-between}.skills>.section-container>.section{width:30%}.skills>.section-container>.section-architecture{width:63.33%}.talk-collection h4{height:3em}ul.talk-features{text-align:center;list-style-type:none;margin:0;padding:0}ul.talk-features>li{display:inline-block;margin:0;padding:0 2em 0 0;color:grey}.card{padding:1em .5em;background-color:#fbfbfb;margin-bottom:1em;width:100%;border:1px solid #ccc}.card:hover{background-color:#fefefe;border:1px solid green}.card-clickable{cursor:pointer}.card-clickable a:hover{text-decoration:none}.card-collection,.card-collection-2x{display:flex;justify-content:space-between;flex-wrap:wrap}.card-collection-2x>.view-all,.card-collection>.view-all{display:flex;align-items:center;cursor:pointer;font-size:2em;padding:.5em;font-style:italic;margin-bottom:.5em;border:1px solid #ccc;background-color:#fbfbfb;color:#222;margin-left:20px}.card-collection-2x>.view-all:hover,.card-collection>.view-all:hover{color:#fff;border:1px solid #fbfbfb;background-color:#ccc}@media screen and (min-width:850px){.card-collection-2x>.card{flex-basis:47.5%}}@media screen and (min-width:850px){.card-collection>.card{flex-basis:30.5%}}code[class*=language-],pre[class*=language-]{color:#657b83;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;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{background:#073642}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{background:#073642}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background-color:#fdf6e3}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#93a1a1}.token.punctuation{color:#586e75}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#268bd2}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string,.token.url{color:#2aa198}.token.entity{color:#657b83;background:#eee8d5}.token.atrule,.token.attr-value,.token.keyword{color:#859900}.token.class-name,.token.function{color:#b58900}.token.important,.token.regex,.token.variable{color:#cb4b16}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.header{padding:3rem 0 0}.header a{color:#222}.header a:hover{color:green;text-decoration:none}.header a.active{border-bottom:2px solid green}.header>.container.separated{border-bottom:1px solid #ccc}.header>.container{padding:.4em 0;display:flex;justify-content:space-between;align-items:center}.header>.container>h1{margin:0;font-size:2em}.header>.container>ul{font-size:1em;list-style:none;margin:0;padding:0}.header>.container>ul>li{display:inline-block;margin:0}.header>.container>ul>li+li{margin-left:1em}.header>.container>ul.social>li+li{margin-left:.6em}@media screen and (min-width:850px){.header>.container.separated>ul{display:none}}@media screen and (min-width:500px) and (max-width:850px){.header>.container.main>ul.categories{display:none}.header>.container.separated{display:flex;flex-direction:column;align-items:center}.header>.container.separated>ul.categories{padding-top:.6em}}@media screen and (max-width:500px){.header>.container{display:flex;flex-direction:column;align-items:center}.header>.container .social{padding:1em 0}.header>.container .categories{order:3}.header>.container.main>ul.categories{display:none}}.footer{padding:3rem 0 0}.footer a{color:#222}.footer a:hover{text-decoration:none}.footer>.container{border-top:1px solid #ccc}.footer>.container>p{margin:.3em 0;text-align:center;font-size:.8em;color:#888}body,div,head,html{margin:0}body{padding:0 10px;font-family:sans-serif;background-color:#f8f8f8;color:#222}h1,h2,h3,h4,h5,h6{margin:.6em 0}h1>a,h2>a,h3>a,h4>a,h5>a,h6>a{color:#222}h1>a:hover,h2>a:hover,h3>a:hover,h4>a:hover,h5>a:hover,h6>a:hover{text-decoration:none}h2{color:#555;font-weight:400}h3{font-family:sans-serif;font-size:1.2em;text-transform:uppercase;display:inline-block;padding:.2em .3em .1em;border-bottom:2px solid green}p{margin:1em 0}p,ul>li{line-height:1.4em}ul>li{margin-bottom:.5em}a{color:green;text-decoration:none}a:hover{text-decoration:underline}a.button{display:inline-block;padding:.6em;border:1px solid #ccc;border-left:2px solid green;background-color:rgba(64,64,64,.1);color:#222;font-weight:700;margin-right:.4em}a.button:hover{text-decoration:none;color:#222;border:1px solid green;border-left-width:2px;background-color:rgba(0,128,0,.3)}@media screen and (min-width:960px){.container{width:960px;margin:0 auto}}.hero{padding:0 1em;border-left:3px solid green;font-weight:700;background-color:#fbfbfb}.hero>p{line-height:1.7em}.breadcrumb{list-style-type:none;margin:.3em 0;border-bottom:1px solid #ccc;padding:0}.breadcrumb>li{padding:0;margin:0;display:inline-block}.breadcrumb>li+li:before{padding:0 .5em;content:"\BB"}.breadcrumb>li.active a{color:#a2a2a2}h2.page-title{text-align:center;font-size:2em;margin:1em 0}li>code[class*=language-],p>code[class*=language-]{padding:.2em;background-color:#fff;border-radius:0}pre[class*=language-]{background-color:#fff;border:1px solid #ccc;border-left:2px solid green;border-radius:0}.talk-container>.description{font-size:1.1em;padding:1em;border:1px solid #ccc;background-color:#fff}.blog-post-content h2{margin-top:1.4em;margin-bottom:.5em;color:#000;border-left:3px solid green;padding:.1em .3em;font-weight:700}.homepage-header{margin-top:.6em;overflow:auto}.homepage-header>h2{margin:0}</style><meta name="generator" content="Gatsby 2.4.3"/><link rel="sitemap" type="application/xml" href="/sitemap.xml"/><title data-react-helmet="true">Alexandre Salomé</title><meta data-react-helmet="true" name="description" content="Alexandre Salomé is a software architect, a PHP/Symfony expert."/><meta data-react-helmet="true" name="keywords" content="Salomé Alexandre, Alexandre Salomé, Alexandre, Salomé"/><link rel="shortcut icon" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/favicon.ico"/><link rel="icon" type="image/png" sizes="16x16" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/favicon-16x16.png"/><link rel="icon" type="image/png" sizes="32x32" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/favicon-32x32.png"/><link rel="manifest" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/manifest.json"/><meta name="mobile-web-app-capable" content="yes"/><meta name="theme-color" content="#fff"/><meta name="application-name" content="Alexandre Salomé"/><link rel="apple-touch-icon" sizes="57x57" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-icon-57x57.png"/><link rel="apple-touch-icon" sizes="60x60" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-icon-60x60.png"/><link rel="apple-touch-icon" sizes="72x72" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-icon-72x72.png"/><link rel="apple-touch-icon" sizes="76x76" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-icon-76x76.png"/><link rel="apple-touch-icon" sizes="114x114" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-icon-114x114.png"/><link rel="apple-touch-icon" sizes="120x120" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-icon-120x120.png"/><link rel="apple-touch-icon" sizes="144x144" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-icon-144x144.png"/><link rel="apple-touch-icon" sizes="152x152" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-icon-152x152.png"/><link rel="apple-touch-icon" sizes="167x167" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-icon-167x167.png"/><link rel="apple-touch-icon" sizes="180x180" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-icon-180x180.png"/><link rel="apple-touch-icon" sizes="1024x1024" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-icon-1024x1024.png"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="apple-mobile-web-app-title" content="Alexandre Salomé"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-startup-image-320x460.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-startup-image-640x920.png"/><link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-startup-image-640x1096.png"/><link rel="apple-touch-startup-image" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-startup-image-750x1294.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3)" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-startup-image-1182x2208.png"/><link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 736px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3)" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-startup-image-1242x2148.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-startup-image-748x1024.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-startup-image-768x1004.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-startup-image-1496x2048.png"/><link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" href="/icons-abc6df09bdc8876fcd0308fdad244d6a/apple-touch-startup-image-1536x2008.png"/><link rel="preconnect dns-prefetch" href="https://www.google-analytics.com"/><link as="script" rel="preload" href="/component---src-pages-index-js-eaae12789051d23dc7fc.js"/><link as="script" rel="preload" href="/1-580ae498e04178a566bb.js"/><link as="script" rel="preload" href="/app-e13209191cf71200bc41.js"/><link as="script" rel="preload" href="/styles-94be4d15c5ae8f451077.js"/><link as="script" rel="preload" href="/webpack-runtime-e9db2c027a98f5307db7.js"/><link as="fetch" rel="preload" href="/static/d/131/path---index-6a9-9OpDsbeklgNGV4MIA7H8IbWlINs.json" crossorigin="use-credentials"/></head><body><noscript id="gatsby-noscript">This app works best with JavaScript enabled.</noscript><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group"><div><div class="header"><div class="container main"><h1><a aria-current="page" class="" href="/">Alexandre Salomé</a></h1><ul class="categories"><li><a href="/blog">Blog</a></li><li><a href="/talks">Talks</a></li><li><a href="/skills">Skills</a></li><li><a href="/about">About</a></li><li><a href="/contact">Contact</a></li></ul><ul class="social"><li><a href="https://twitter.com/alexandresalome" title="Twitter profile"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:24px;height:24px"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA3XAAAN1wFCKJt4AAABiklEQVQ4y5WUuy9EURDG765QiFcUSgoSiQSJQoSg3ijUEjQeCbXCKyGKrTTiH0BBJ1voPBqFqFco+A+ERoTdvQ/fSebIZ3Lude9Jfpm7c2a/M3dmzvW89CsX488n7P0r1gxmwTaYk98c02Qe+sGYOpFXndhR8AB8EIEaKIMZsA4O7B9WJGCaROpF2Ip3ipiJC4WIeAOLYNAEb4jzU05qJeEGsUsS802ChkD8H+Ac9JjgeXXaLVgG3SS8JXtVlaG1d6CNX+9KNr5I+AlcgH3a95WYzbDIzSuAE/BKWQQq68hRt5AatMldXBBnhYRscE35tKjvaKjXCK5jMgljasZNMY3q0sPfC47otV3Z6AOrYk9pGv4M7qHMU+jIRIsF9LoFfSFsmsUUTbC2Is/HrrtuL7exu+AFvCfU0IqVqXb5pA/BELh3zF1AYs9gWJXsdw2AETAF9sAjiQWqXoYb0BcnZtY4KMV0lDEHrYKWJDG7OsAEWJNbcynX7QzsgEnQ7piMTB/UXAZ/5sDUQj9EisB2xNxd1AAAAABJRU5ErkJggg==" alt="" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:500ms"/><noscript><picture><img width="24" height="24" srcset="/static/302c43b1bc1945b31753e16eda30a3d3/9af70/twitter.png 1x" src="/static/302c43b1bc1945b31753e16eda30a3d3/9af70/twitter.png" alt="" style="position:absolute;top:0;left:0;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div></a></li><li><a href="https://github.com/alexandresalome" title="Github profile"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:24px;height:24px"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA3XAAAN1wFCKJt4AAABwUlEQVQ4y52UyyuEURjGz8dIUS7ZKBspShQiK5GykSxY2mjUbJQSJTtlQ9lY+gOQhWQiFiRkQ0ZqJPcsFGbhfhnX8Rw9X945HWPy1q9vznu+8857zvOcT6mfSBC/68EAmAIrYAOsgmkwBJqBw3cTlSXcySLgB/cgEoMXsAhqjfVRnTWCC7HoGYS5OCx4Mgp32DqsAtd86Qrc/NHhO7gUY5/sNANsceIOeEE1t74P1sACWAJBEADtoIJzEXZd5nbXLf4pBIpF57kgWYxzQKYYj4q1827SL5JajBrmPcY5O8Y4BcwazWh3qEORnDGUtxVyhFVaKJ5ee0tbRQngs3jSFu58OtgUrjjRyTdR0GvzVQzfpoF1rn2lOOpBFByM5X4R7nwhOBaePNfJI1HwAKSq+KPXEHROCaV2wCO9VcJteSydabJAn3FrQu6R9TAxyet3Jg65yxChkh+KsHFrIsx/Rza708lhLloG26DcItIp3/0An3zqcZPcSgOTWvE2UMADdyxCBERB1yEjNsVaxTaCVC9fdGgrqJ8TxvWM2lId2BOFSy0FdzmnBewHSb95V5q1k2eYZ1xDHWNgnE5QcV6E/8cXEMKoFlffUFEAAAAASUVORK5CYII=" alt="" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:500ms"/><noscript><picture><img width="24" height="24" srcset="/static/44181db6834744c21edde9e47c1e9bb5/9af70/github.png 1x" src="/static/44181db6834744c21edde9e47c1e9bb5/9af70/github.png" alt="" style="position:absolute;top:0;left:0;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div></a></li><li><a href="https://linkedin.com/in/alexandresalome" title="LinkedIn profile"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:24px;height:24px"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA3XAAAN1wFCKJt4AAABgElEQVQ4y62UOy8EURiGDwkikbgkFBIkhEZDFMI2ComKViNKtcQPsKgl/AVZCqKkQqOxqAlxWRuadYvCLWZ2vd96Z31zspcRc5InM/POOU+++U7OGPMzWkDrP2gDDXSZDXAHrsAFOAeX4PoP3IBTsCDCTMgYFzggDbbAHDjhyy++D4LnyN7I4j3zO/rBE3O3REVpdfUJd5WwFzxbVXoL7MrSljh3I+yARW5M0J65hYQPYJt93GeWADGwAs5AEiyDGbDEHc5YReU++UB9ch+zmMqGQJPxj0ZwpCr19fAQVHJihNkan8t5bQajoE5JxzjXsSsUYQUnDVpCGe3glvmmyruLVVhMOK76JOJq5l3gQ/UysHBSCWUzapl3gtdSwkgJYcISvuUTxlXzB5itKuGEJaxh3qGE0sfsSZCHY1DPScPM1kEVK59SwiR3vAz0KKFj1PGSxt6DFM+xw96kyAsz4VPNfeR6rzDzHuKvSzbLjIB5MGsRLZBF87yT9dPcoHDHN3hsAfy5LEegAAAAAElFTkSuQmCC" alt="" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:500ms"/><noscript><picture><img width="24" height="24" srcset="/static/40b47538d4a980fe8a73e75478a35eac/9af70/linkedin.png 1x" src="/static/40b47538d4a980fe8a73e75478a35eac/9af70/linkedin.png" alt="" style="position:absolute;top:0;left:0;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div></a></li></ul></div><div class="container separated"><ul class="categories"><li><a href="/blog">Blog</a></li><li><a href="/talks">Talks</a></li><li><a href="/skills">Skills</a></li><li><a href="/about">About</a></li><li><a href="/contact">Contact</a></li></ul></div></div><div class="container"><div class="homepage-board"><div class="homepage-header"><div class=" gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:120px;height:120px;float:right;margin-left:1em"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEz0lEQVQ4ywHEBDv7AEZDPEVDPEZFP0dGQGFXTXVqXmthV25jVmhbTlJIPUxDOF5TR2FYSk5GO0U+Mz83LTgwKDUuJjMsJC8oIABKR0BJRkBKSENUTUJsYVJ9c2N9dWRiWkwiHBYaFBEjGxcwJR9NQjhTSkBIPzdDOzI8NCs6Mik4MCczLCQATUtESkhEZFpPNjAoLCkiMi8mLSkhFxIOEAwJHhcULiIgIRUSLRsUSDkvWk9GUkc+ST81QzkwPzYtOjEoAExMR15YUWxfVBMTEA8OCxcVEQ0JBhILBxEKBxEMCTAeGVM4MXZZU19IQGdYTHFiVlxOQ1FFOkk/NEE3LgBRTklrX1VTTkcMDAhzcGmMioMaCQRKLihPNC9BKCJoRj+vjYnQqqiqg39sV02BcWRpWk1aTEFSRjpGPTIAUElCWE9JSEdCExENhoWBi4aCWC4ipnRruIqEuo+IyqSi07Cwy6Gex5iSjXBmdmdbZldMTUI4PzYtLScgAF5UTEZDPktIRCEfHFhXU2RRSoJNQax2bbyJhcebmc6opc+pp9Cmpc6jnZR0amVWTT00LhAODA8NCwkKBwBtYlpBPjpOSkUtKycpKCZGLyaATj+teG/Ck47SqajSq6rTr63DoZy5lY6Wdm9MQDcnIR0CAwEICAUICQYATkhCQkA8TklGNjIuEBEPMh8Xc0M2hFlReU9Il2lfyqKbqXtwYjozjWpiqYN5Zk1HHhwWBwcFCAgGCAkGACsoJEJAPU5KRzY1MCMaFlAtJXZIOHhGN2M/OHxHO72NhcKWj6V+ebuWis2jl3haVRsZEggIBgcHBQgJBQAmJB8+PTlPSkc8OjYjGhhoNzCMXU60gXDCkISoc2i5hH/Xqqjcsq/WsavOqJ9qVE0dGRQJCQcHBwUGBgMAJiQfOTczS0dEQj46ExQRTywki1lKu42Dx5OOpWtix5aT1qqn0qSh06yox6KZYk5HIBwWCQkHBQUDAgQBAConIzIwLEdDQUVAPRITEDYhHWY+M6p6brWCdn1IP3tTTKl9d86indSup6aHfjowJyciHAkJBwYGBAIEAQAwLSorKSZDQT1FQj8bGBcNDwwqGxR8U0WNYVJnNCxsODKTYFmid2y4k4duU0soIh0tJx8JCQcGBgQCBAEAODY0JSMhPj47QT47HRsZDw8NFhMQTC0jiFtOnmNdpmlpuoKBu4+Gkm9iQDApFBAIKSAUCAcFBgUEBQcEAD49Ox8eHDg4ODc1MB8dGgsMChwZFls3LFs7MZpxZoZaUrGJgKOCd3FTSWNYU1VUUEI+OBgYFwcHBgAAAABFRUMcGxkzMzM7PDklJSIAAAAzMS+NZlljPDFVOzOLZl6JaF9iSkCScmdoUEnHzdXU3um7w8ymrbViZ2oATk5NGxsZMDIwPj88Hx8cHx8dfn1/m46MhFREakM3aEo/b1FFl3puxKSYclFDkouN2+Xx2uPu6PL96PL8AFlZWhoaGCEiIDI0MVdYW52gprCzt6yutJaJhoZYSJBmVKaDdMGilc2xqJl9dG1hYdPe5+by/uTv++Pu+gBjZGYbGRZHSkqlq7DCyM/Q1t/Cx8+ztbvGzdW/ur21lovCpJjOs6rMsKbBtLOEhY2WmZ7h6/Lm8/3m8vwIVJo7u8vazgAAAABJRU5ErkJggg==" alt="" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:500ms"/><noscript><picture><img width="120" height="120" srcset="/static/bfc23063fdc9fb6e147cd1c1d3c990c3/c6bd3/avatar.png 1x,
/static/bfc23063fdc9fb6e147cd1c1d3c990c3/411e6/avatar.png 1.5x,
/static/bfc23063fdc9fb6e147cd1c1d3c990c3/4abc9/avatar.png 2x,
/static/bfc23063fdc9fb6e147cd1c1d3c990c3/48711/avatar.png 3x" src="/static/bfc23063fdc9fb6e147cd1c1d3c990c3/c6bd3/avatar.png" alt="" style="position:absolute;top:0;left:0;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div><h2>Software engineer @ Blackfire.io</h2></div><div class="section section-blog"><h3><a href="/blog">Blog</a></h3><div class="card-collection-2x"><div class="card card-clickable"><h4><a href="/blog/twig-templating-in-behat-tests">Twig templating in Behat tests</a></h4>
Lately, in my projects, I needed to use Twig in my Behat tests in order to solve common problems: dynamic identifiers,
and avoiding boilerplate tests.

<p>May 2019</p></div><div class="card card-clickable"><h4><a href="/blog/french-articles-afsy-avent">Some french articles about Behat and Doctrine</a></h4>
For a french association, I wrote two technical articles (in French).

<p>December 2013</p></div></div><p><a class="button" href="/blog">See all articles</a></p></div><div class="section section-talks"><h3><a href="/talks">Talks</a></h3><div class="card-collection"><div class="card card-clickable"><h4><a href="/talks/symfony-forms-advanced-use-cases">Symfony Forms - Advanced Use Cases</a></h4><p>June 2021</p></div><div class="card card-clickable"><h4><a href="/talks/migrer-vers-une-architecture-micro-services-points-de-controle-pour-une-migration-reussie"> Migrer vers une architecture micro-services : points de contrôle pour une migration réussie</a></h4><p>September 2020</p></div><div class="card card-clickable"><h4><a href="/talks/concevoir-des-back-offices-performants">Concevoir des back-offices performants</a></h4><p>June 2020</p></div></div><p><a class="button" href="/talks">See all talks</a></p></div></div></div><div class="footer"><div class="container"><p>All rights reserved</p></div></div></div></div></div><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', 'UA-140773643-1', 'auto', {});
      
      
      
      }
      </script><script id="gatsby-script-loader">/*<![CDATA[*/window.page={"componentChunkName":"component---src-pages-index-js","jsonName":"index","path":"/"};window.dataPath="131/path---index-6a9-9OpDsbeklgNGV4MIA7H8IbWlINs";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-e13209191cf71200bc41.js"],"component---src-templates-talk-js":["/component---src-templates-talk-js-af12bebc9c1084ea3d7f.js"],"component---src-templates-blog-post-js":["/component---src-templates-blog-post-js-66ab55bacf7a51a382b8.js"],"component---src-pages-404-js":["/component---src-pages-404-js-ea682d994e61c5b6e092.js"],"component---src-pages-about-js":["/component---src-pages-about-js-b47842d7d105ffa22dad.js"],"component---src-pages-blog-js":["/component---src-pages-blog-js-8267c37c2694d4fb0d04.js"],"component---src-pages-contact-js":["/component---src-pages-contact-js-58650c462d9bc9e17587.js"],"component---src-pages-index-js":["/component---src-pages-index-js-eaae12789051d23dc7fc.js"],"component---src-pages-skills-js":["/component---src-pages-skills-js-8218bf8415246f8b6ee0.js"],"component---src-pages-skills-architecture-js":["/component---src-pages-skills-architecture-js-f0b774e626b65983826c.js"],"component---src-pages-skills-audit-js":["/component---src-pages-skills-audit-js-439b9cf1058bc3305b2b.js"],"component---src-pages-skills-coaching-js":["/component---src-pages-skills-coaching-js-fd1ca1a56c181c74a1f6.js"],"component---src-pages-skills-development-js":["/component---src-pages-skills-development-js-b582c4301c8642b6fae6.js"],"component---src-pages-skills-trainings-js":["/component---src-pages-skills-trainings-js-40ee5ed4087a64d4b60e.js"],"component---src-pages-talks-js":["/component---src-pages-talks-js-4b1855d4203773e4e89a.js"],"pages-manifest":["/pages-manifest-dd1afe3fbcfbcec20f4c.js"]};/*]]>*/</script><script src="/webpack-runtime-e9db2c027a98f5307db7.js" async=""></script><script src="/styles-94be4d15c5ae8f451077.js" async=""></script><script src="/app-e13209191cf71200bc41.js" async=""></script><script src="/1-580ae498e04178a566bb.js" async=""></script><script src="/component---src-pages-index-js-eaae12789051d23dc7fc.js" async=""></script></body></html>