mirror of
https://github.com/danog/danog.github.io.git
synced 2024-11-30 04:29:14 +01:00
1 line
46 KiB
HTML
1 line
46 KiB
HTML
<!DOCTYPE html><html lang="en"><head><title>Daniil Gentili</title><meta charset="utf-8"><meta http-equiv="expires" content="86400"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name="description" content="Senior software engineer with a vast experience in the development of complex, high-performance and massively parallel systems using Rust, Golang, C++, C, PHP."><meta name="language" content="en"><meta property="og:image:secure_url" content="https://daniil.it//img/ab79012abc195fba599b6e1867dc9b4a.svg"><meta name="twitter:card" content="summary"><meta name="twitter:image" content="https://daniil.it//img/ab79012abc195fba599b6e1867dc9b4a.svg"><meta name="twitter:title" content="Daniil Gentili"><meta name="twitter:description" content="Senior software engineer with a vast experience in the development of complex, high-performance and massively parallel systems using Rust, Golang, C++, C, PHP."><meta name="yandex-verification" content="7c9f7c7c56da50cf"><meta property="og:type" content="website"><meta property="og:locale" content="en"><meta property="og:title" content="Daniil Gentili"><meta property="og:description" content="Senior software engineer with a vast experience in the development of complex, high-performance and massively parallel systems using Rust, Golang, C++, C, PHP."><meta property="og:url" content="https://daniil.it/"><meta property="og:site_name" content="Daniil Gentili"><link rel="canonical" href="https://daniil.it/"><link rel="sitemap" type="application/xml" title="Sitemap" href="https://daniil.it//sitemap.xml"><style>:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0c1821;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:12,24,33;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#050a0d;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#ced1d3;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ea3a6;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg,#ffffff26,#fff0);--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:#212529bf;--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:#21252980;--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0c1821;--bs-link-color-rgb:12,24,33;--bs-link-decoration:underline;--bs-link-hover-color:#0a131a;--bs-link-hover-color-rgb:10,19,26;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0,0,0,.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem #00000026;--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0,0,0,.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0,0,0,.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0,0,0,.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:#0c182140;--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{-webkit-text-size-adjust:100%;background-color:var(--bs-body-bg);color:var(--bs-body-color);font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);margin:0;text-align:var(--bs-body-text-align)}hr{border:0;border-top:var(--bs-border-width) solid;color:inherit;margin:1rem 0;opacity:.1}h1{color:var(--bs-heading-color);font-weight:500;line-height:1.2;margin-bottom:.5rem;margin-top:0}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}ul{padding-left:2rem}ul{margin-bottom:1rem;margin-top:0}b{font-weight:bolder}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}img{vertical-align:middle}button{border-radius:0}button,input{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button{text-transform:none}[type=button],button{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{-webkit-appearance:button;font:inherit}.img-fluid{height:auto;max-width:100%}.container{--bs-gutter-x:1.5rem;--bs-gutter-y:0;margin-left:auto;margin-right:auto;padding-left:calc(var(--bs-gutter-x)*.5);padding-right:calc(var(--bs-gutter-x)*.5);width:100%}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-left:calc(var(--bs-gutter-x)*-.5);margin-right:calc(var(--bs-gutter-x)*-.5);margin-top:calc(var(--bs-gutter-y)*-1)}.row>*{flex-shrink:0;margin-top:var(--bs-gutter-y);max-width:100%;padding-left:calc(var(--bs-gutter-x)*.5);padding-right:calc(var(--bs-gutter-x)*.5);width:100%}@media (min-width:576px){.col-sm-auto{flex:0 0 auto;width:auto}}.form-control{appearance:none;background-clip:padding-box;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);color:var(--bs-body-color);display:block;font-size:1rem;font-weight:400;line-height:1.5;padding:.375rem .75rem;width:100%}.form-control::-webkit-date-and-time-value{height:1.5em;margin:0;min-width:85px}.form-control::-webkit-datetime-edit{display:block;padding:0}.invalid-feedback{color:var(--bs-form-invalid-color);display:none;font-size:.875em;margin-top:.25rem;width:100%}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:#0000;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:#0000;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:#0000;--bs-btn-box-shadow:inset 0 1px 0 #ffffff26,0 1px 1px rgba(0,0,0,.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb),.5);background-color:var(--bs-btn-bg);border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);color:var(--bs-btn-color);display:inline-block;font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);text-align:center;text-decoration:none;vertical-align:middle}.section-primary .btn{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.collapse:not(.show){display:none}.nav-link{background:0 0;border:0;color:var(--bs-nav-link-color);display:block;font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);text-decoration:none}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb),0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb),0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb),0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(33, 37, 41, 0.75)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb),0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);position:relative}.navbar>.container{align-items:center;display:flex;flex-wrap:inherit;justify-content:space-between}.navbar-brand{color:var(--bs-navbar-brand-color);font-size:var(--bs-navbar-brand-font-size);margin-right:var(--bs-navbar-brand-margin-end);padding-bottom:var(--bs-navbar-brand-padding-y);padding-top:var(--bs-navbar-brand-padding-y);text-decoration:none;white-space:nowrap}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;list-style:none;margin-bottom:0;padding-left:0}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{background-color:#0000;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);color:var(--bs-navbar-color);font-size:var(--bs-navbar-toggler-font-size);line-height:1;padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x)}.navbar-toggler-icon{background-image:var(--bs-navbar-toggler-icon-bg);background-position:50%;background-repeat:no-repeat;background-size:100%;display:inline-block;height:1.5em;vertical-align:middle;width:1.5em}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}.alert{--bs-alert-bg:#0000;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:#0000;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius);color:var(--bs-alert-color);margin-bottom:var(--bs-alert-margin-bottom);padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);position:relative}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.fixed-top{top:0}.fixed-top{left:0;position:fixed;right:0;z-index:1030}.d-flex{display:flex!important}.d-none{display:none!important}.justify-content-center{justify-content:center!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-auto{margin-bottom:auto!important;margin-top:auto!important}.btn-init{margin-bottom:1.5rem!important}.ms-auto{margin-left:auto!important}.text-center{text-align:center!important}.section-primary{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.section-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.rounded{border-radius:var(--bs-border-radius)!important}header.masthead{height:100vh;padding-bottom:0;padding-top:0}header.masthead hr{margin-bottom:30px;margin-top:30px}#mainNav{background-color:#fff;background-color:#0000;border-bottom:1px solid;border-color:#0000}#mainNav .navbar-brand{color:#0c1821;font-weight:700;text-transform:uppercase}#mainNav .navbar-toggler{background-color:#fff}#mainNav .navbar-nav{background-color:#fff}#mainNav .navbar-nav>li.nav-item>a.nav-link{color:#212529;font-size:.9rem;font-weight:700;text-transform:uppercase}#mainNav .navbar-brand{color:#ffffffb3}#mainNav .navbar-nav>li.nav-item>a.nav-link{padding:.5rem 1rem}.form-group{margin-bottom:1rem}.btn-init{border-radius:calc(var(--bs-border-radius-sm)*2.25);font-size:calc(1.32188rem + .8625vw);padding:.5625rem 1.125rem}@media (min-width:1200px){.btn-init{font-size:1.96875rem}}@media (min-width:992px){.btn-init{border-radius:calc(var(--bs-border-radius-sm)*2);font-size:calc(1.3rem + .6vw);padding:.5rem 1rem}}@media (min-width:992px)and (min-width:1200px){.btn-init{font-size:1.75rem}}.text-blog{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.text-blog{font-size:1.75rem}}.text-white{color:#fff}.section-primary{color:#000}.section-primary a{color:#000!important;text-decoration:underline}.section-primary .btn{text-decoration:none!important}</style><script defer="defer" src="/index.bundle.js?5a5ed185e89d3dd0c7b8"></script><link href="/index.9c6687ee.css?5a5ed185e89d3dd0c7b8" rel="stylesheet" media="print" onload="this.media='all'"><link rel="icon" type="image/png" href="/favicons/favicon-48x48.png" sizes="48x48"><link rel="icon" type="image/svg+xml" href="/favicons/favicon.svg"><link rel="shortcut icon" href="/favicons/favicon.ico"><link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png"><link rel="manifest" href="/favicons/site.webmanifest"></head><body id="page-top" data-bs-spy="scroll" data-bs-target="#mainNavBar"><nav class="navbar navbar-expand-lg navbar-light d-print fixed-top" id="mainNav"><div class="container"><a class="navbar-brand js-scroll-trigger" href="https://daniil.it/#page-top"><h1><img src="https://daniil.it//img/ab79012abc195fba599b6e1867dc9b4a.svg" alt="@danog"></h1></a><button class="navbar-toggler navbar-toggler-right" type="button" data-bs-toggle="collapse" data-bs-target="#mainNavBar" aria-controls="mainNavBar" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse" id="mainNavBar"><ul class="navbar-nav ms-auto rounded"><li class="nav-item"><a class="nav-link js-scroll-trigger" href="https://daniil.it/#portfolio" title="Portfolio">Portfolio</a></li><li class="nav-item"><a class="nav-link js-scroll-trigger" href="https://daniil.it/#contacts" title="Hire me!">Hire me!</a></li></ul></div></div></nav><header class="masthead text-center d-flex section-primary"><div class="my-auto mx-auto"><div class="container"><picture><source type="image/avif" srcset="img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg"><source type="image/webp" srcset="img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg"><source type="image/jpeg" srcset="img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg, img/ab79012abc195fba599b6e1867dc9b4a.svg"><img class="img-fluid" alt="Daniil Gentili" src="img/ab79012abc195fba599b6e1867dc9b4a.svg" loading="eager"></picture><div class="text-white text-blog"><hr><b>Daniil Gentili</b> - Senior software engineer with a vast experience in the development of complex, high-performance and massively parallel systems using Rust, Golang, C++, C, PHP.</div><br><br><div class="justify-content-center row"><div class="col-sm-auto"><a href="#portfolio" class="btn btn-init js-scroll-trigger" role="button">Portfolio</a> <a href="#contacts" class="btn btn-init js-scroll-trigger" role="button">Hire me!</a></div></div></div></div></header><section id="portfolio" class="section-white"><div class="container"><div class="row"><div class="mx-auto text-center col-lg-10"><h2 class="section-heading">Portfolio</h2><hr class="light my-4"></div></div></div><div class="container"><div class="row"><div class="mx-auto col-lg-10"><div class="text-center"><a title="Github" href="https://github.com/danog" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a><a title="Linkedin" href="https://linkedin.com/in/daniilgentili" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="linkedin" class="svg-inline--fa fa-linkedin fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a><a title="E-mail" href="mailto:daniil@daniil.it" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="envelope" class="svg-inline--fa fa-envelope fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM0 176L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-208L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"></path></svg></a><a title="Telegram" href="https://t.me/danogentili" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="telegram" class="svg-inline--fa fa-telegram fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M248,8C111.033,8,0,119.033,0,256S111.033,504,248,504,496,392.967,496,256,384.967,8,248,8ZM362.952,176.66c-3.732,39.215-19.881,134.378-28.1,178.3-3.476,18.584-10.322,24.816-16.948,25.425-14.4,1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25,5.342-39.5,3.652-3.793,67.107-61.51,68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608,69.142-14.845,10.194-26.894,9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7,18.45-13.7,108.446-47.248,144.628-62.3c68.872-28.647,83.183-33.623,92.511-33.789,2.052-.034,6.639.474,9.61,2.885a10.452,10.452,0,0,1,3.53,6.716A43.765,43.765,0,0,1,362.952,176.66Z"></path></svg></a><a title="Call me!" href="tel:3924682693" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="phone" class="svg-inline--fa fa-phone fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z"></path></svg></a><a title="Whatsapp" href="https://wa.me/393924682693?text=Hello!" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="whatsapp" class="svg-inline--fa fa-whatsapp fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"></path></svg></a><a title="Instagram" href="https://instagram.com/danogentili" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="instagram" class="svg-inline--fa fa-instagram fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></a></div><div class="p-3 text-break text-blog"><p>Daniil Gentili (VAT 01647560299) - Senior software engineer with a vast experience in the development of complex, high-performance and massively parallel systems using Rust, Golang, C++, C, PHP.</p><p>Creator of <a href="https://github.com/danog/MadelineProto" target="_blank">MadelineProto</a>, maintainer of <a href="https://github.com/vimeo/psalm" target="_blank">Psalm</a>, <a href="https://github.com/davidcole1340/ext-php-rs" target="_blank">ext-php-rs</a>.</p><br>Native speaker in Italian and English: currently residing in Italy.<br>10+ years of experience.<br><br>Professional experience:<ul><li>Main clients: Telegram and Nicelocal.</li><li>Languages: Rust, C++20, C, Golang, PHP, Node, Bash, Lua.</li><li>Significant FOSS contributor: creator of (<a href="https://github.com/danog" target="_blank">among others</a>) <a href="https://github.com/danog/MadelineProto" target="_blank">MadelineProto</a>, <a href="https://github.com/danog/php-tokio" target="_blank">php-tokio</a>, maintainer of <a href="https://github.com/vimeo/psalm" target="_blank">Psalm</a>, <a href="https://github.com/davidcole1340/ext-php-rs" target="_blank">ext-php-rs</a>, <a href="https://github.com/osteele/gojekyll" target="_blank">gojekyll</a>.</li><li>Stacks: MySQL/MongoDB/redis/keydb, Elasticsearch, Kafka, Linux, Docker, Grafana stack (prometheus/influxdb), and much more.</li><li>Frameworks: AMPHP, React, Redux, Bootstrap, and much more.</li><li>Advanced networking: administrator of the <a href="https://as198747.daniil.it" target="_blank">AS198747</a> autonomous system.</li></ul><br><a href="#contacts" class="btn btn-init js-scroll-trigger" role="button">Hire me!</a><br><br>Professional works:<br><ul><li>Created from scratch a high-load, efficient NFA search engine built from scratch in Go, compiling a custom regex-like language to a highly optimized NFA.</li><li>Implemented full sharding for massive parallelism in a high-load service for advertisement statistics in Go.</li><li>Multiple large refactorings to a 1 million SLOC PHP 5/7 codebase, migration to PHP 8, 10% => 95% type coverage.</li><li>Various other Rust, Go, C and (async/traditional) PHP development.</li><li>VoIP telephony applications, including a full integration testing platform for asterisk, and fixes to critical race-conditions in the C codebase of the open-source asterisk project.</li><li>An automated VoIP integration testing and quality control platform for Android, requiring low-level changes to the Android Hardware Abstraction Layer driver stack (C/C++).</li><li>Other low-level software development, using mainly C, and a bit of PHP.</li><li>I am currently maintaining the <a href="https://core.telegram.org">official technical documentation for the Telegram MTProto protocol</a>.</li></ul><br>Personal/open source work:<ul><li><a href="https://github.com/danog/MadelineProto" target="_blank">MadelineProto</a> - an open-source client for the MTProto cryptographic protocol, most notably used for interacting with Telegram Messenger’s <a href="https://core.telegram.org" target="_blank">low-level MTProto API</a>.<br>MadelineProto is now approved by Telegram, and can be seen in the apps list on the official website: <a href="https://telegram.org/apps" target="_blank">https://telegram.org/apps</a>.<br>MadelineProto abstracts away all implementation details of the Telegram MTProto API, handling cryptography, transport protocols, the presentation layer with a dynamic parser (soon to be replaced by a static parser) for the TL Type Language and the MTProto API, offering a fully asynchronous fiber-based (AMPHP v3) high-level PHP API.<br>It also supports secret chats and features a pure PHP implementation of Telegram's VoIP protocol, for native PHP audio call support in MadelineProto!<br>Head over to <a target="_blank" rel="noopener" href="https://docs.madelineproto.xyz">docs.madelineproto.xyz</a> for a full installation and usage tutorial.</li><li>1st, 2nd and 3rd places in several programming contests for developing innovative and original solutions for blockchain, VoIP and data clustering/big data applications, developed in C++20 and PHP.</li><li>Significant FOSS contributions: creator of (<a href="https://github.com/danog" target="_blank">among others</a>) <a href="/MadelineProto.html" target="_blank">MadelineProto »</a>, <a href="https://github.com/danog/php-tokio" target="_blank">php-tokio »</a>, maintainer of <a href="https://github.com/vimeo/psalm" target="_blank">Psalm »</a>, <a href="https://github.com/davidcole1340/ext-php-rs" target="_blank">ext-php-rs »</a>, <a href="https://github.com/osteele/gojekyll" target="_blank">gojekyll »</a>.<br><br>Thanks to generous sponsorships from Nicelocal, I have contributed multiple large refactoring to <a href="https://github.com/vimeo/psalm" target="_blank">Psalm</a>, an advanced PHP static analysis system developed by Vimeo.<br><br>Psalm is like Typescript for PHP, adding to PHP features like generics, shaped arrays and literal types, with the addition of static analysis using formal methods, to easily discover bugs before even executing the code.<br><br>Some of my work on Psalm includes:<br><ul><li>Full immutability for the entire codebase, fixing a large amount of issues caused by non-deterministic execution order when threading is enabled.</li><li>List shapes, huge improvements to array shapes, including unsealed/sealed array shapes, generics improvements.</li><li>Currently working on disjoint array shape support and a satisfies operator for improved generics, inspired by typescript.</li><li>Creation of over 140 pull requests with other features and bug fixes.</li></ul>Thanks to these contributions, I was offered a role of Psalm maintainer, which I happily accepted.<br>Other open source work:<ul><li>Two PHP RFCs - Proposals to add/change features in the PHP language, one of which was accepted.</li><li>Multiple improvements to the testsuite of the PHP JIT compiler, as well as a lot of QA to find and report bugs in the PHP JIT compiler.</li><li><a href="https://github.com/danog/php-tokio" target="_blank">php-tokio</a> - A Rust project to use any async Rust library from PHP.</li><li><a href="https://github.com/danog/madelineTon.js" target="_blank">madelineTon.js</a> - Pure JS client-side implementation of the Telegram TON blockchain protocol: this library was developed during the contests, and makes use of the mathematical properties of Ed25519 and Montgomery curves to implement efficient conversion of points, to reuse the otherwise (incompatible due to non-standard TON cryptography protocols) high-performance nacl.js library for encryption.</li><li><a href="https://github.com/phabelio/phabel" target="_blank">Phabel</a> - A PHP transpiler inspired by Babel (currently not publicly maintained, but still being used internally for various projects, thanks to the very ergonomic graph-based AST transformation framework it offers internally).</li><li><a href="https://github.com/danog/AsyncOrm" target="_blank">AsyncOrm</a> - Async ORM based on AMPHP v3 and fibers.</li><li>I'm the main maintainer of <a href="https://github.com/osteele/gojekyll" target="_blank">gojekyll</a>, a fast Go implementation of the Jekyll blogging engine.</li><li>I created and maintain several other open source libraries, listed in <a href="https://github.com/danog" target="_blank">my GitHub profile</a></li></ul></li><li>I maintain my own Autonomous System, <a href="https://bgp.he.net/AS198747" target="_blank">AS198747</a>, using a redundant infrastructure with two upstreams and a custom network configuration using bird2+routinator, openwrt, wireguard and systemd-networkd.<br>All subnets announced by AS198747 are RPKI-validated, and any imported RPKI invalid routes are rejected.<br>All of my containerized infrastructure with multiple services (self-hosted CI, gitea, PHP/Go/Rust services, etc) is also hosted on AS198747 via IPv6.<br>The IPv4 part of my infrastructure is hosted on a commercial ISP that does not do RPKI validation, but IPv4 RPKI invalid routes are still rejected on my routers, thanks to a custom filtering setup based on bird2 and routinator.<br></li><li>Various currently-private low-level projects, including a port of Linux for the Videocore IV architecture (a custom architecture used by the VPU of Raspberry PI), and a hobby OS in C.</li></ul><br><br><a href="#contacts" class="btn btn-init js-scroll-trigger" role="button">Hire me!</a></div></div></div></div></section><section id="contacts" class="section-white"><div class="container"><div class="row"><div class="mx-auto text-center col-lg-10"><h2 class="section-heading">Contacts</h2><hr class="light my-4"></div></div></div><div class="container"><div class="row"><div class="mx-auto col-lg-10"><div><div class="text-center"><a title="Github" href="https://github.com/danog" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a><a title="Linkedin" href="https://linkedin.com/in/daniilgentili" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="linkedin" class="svg-inline--fa fa-linkedin fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a><a title="E-mail" href="mailto:daniil@daniil.it" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="envelope" class="svg-inline--fa fa-envelope fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM0 176L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-208L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"></path></svg></a><a title="Telegram" href="https://t.me/danogentili" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="telegram" class="svg-inline--fa fa-telegram fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M248,8C111.033,8,0,119.033,0,256S111.033,504,248,504,496,392.967,496,256,384.967,8,248,8ZM362.952,176.66c-3.732,39.215-19.881,134.378-28.1,178.3-3.476,18.584-10.322,24.816-16.948,25.425-14.4,1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25,5.342-39.5,3.652-3.793,67.107-61.51,68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608,69.142-14.845,10.194-26.894,9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7,18.45-13.7,108.446-47.248,144.628-62.3c68.872-28.647,83.183-33.623,92.511-33.789,2.052-.034,6.639.474,9.61,2.885a10.452,10.452,0,0,1,3.53,6.716A43.765,43.765,0,0,1,362.952,176.66Z"></path></svg></a><a title="Call me!" href="tel:3924682693" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="phone" class="svg-inline--fa fa-phone fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z"></path></svg></a><a title="Whatsapp" href="https://wa.me/393924682693?text=Hello!" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="whatsapp" class="svg-inline--fa fa-whatsapp fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"></path></svg></a><a title="Instagram" href="https://instagram.com/danogentili" target="_blank" rel="noopener noreferrer" class="btn-social btn-outline"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="instagram" class="svg-inline--fa fa-instagram fa-fw" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></a></div><form action="https://formspree.io/daniil@daniil.it" method="POST" id="contact-form" class="validate-me" novalidate=""><div class="form-group"><label for="contact-form_subject" class="form-label">Name</label><input name="_subject" id="contact-form_subject" required="" class="form-control" placeholder="Name"><div class="invalid-feedback">Enter a name!</div></div><div class="form-group"><label for="contact-form_replyto" class="form-label">E-Mail</label><input name="_replyto" id="contact-form_replyto" required="" class="form-control" placeholder="E-Mail" type="email"><div class="invalid-feedback">Enter a valid E-Mail address!</div></div><div class="form-group"><label for="contact-formServices" class="form-label">What services do you require?</label><select name="Services" id="contact-formServices" required="" class="form-select"><option value="">-</option><option value="Custom engineering services (Rust/Golang/C++/C/PHP/etc, get in touch)">Custom engineering services (Rust/Golang/C++/C/PHP/etc, get in touch)</option><option value="MadelineProto services/support (starting at 60$/hour)">MadelineProto services/support (starting at 60$/hour)</option><option value="Support for other OSS I maintain (Psalm/ext-php-rs/gojekyll/etc, starting at 60$/hour)">Support for other OSS I maintain (Psalm/ext-php-rs/gojekyll/etc, starting at 60$/hour)</option></select><div class="invalid-feedback">Enter an option!</div></div><div class="form-group"><label for="contact-formMessage" class="form-label">Message</label><textarea name="Message" id="contact-formMessage" required="" class="form-control" placeholder="Message"></textarea><div class="invalid-feedback">Enter a message!</div></div><div class="form-group form-check"><input name="Privacy" id="contact-formPrivacy" required="" class="form-check-input" type="checkbox"><label for="contact-formPrivacy" class="form-check-label">I accept the terms of the <a href="https://www.iubenda.com/privacy-policy/84470792" target="_blank" rel="noopener noreferrer">privacy policy</a></label></div><input type="hidden" name="_language" id="contact-form_language" value="en"><div class="form-group d-none"><input name="_gotcha" id="contact-form_gotcha" class="form-control d-none"></div><div class="alert alert-danger d-none" role="alert" id="contact-formError">Check whether all fields were filled correctly!</div><div><label for="contact-formsubmit" class="form-label">Click on the following button to send the message:</label><br><button type="submit" name="submit" id="contact-formsubmit" class="btn" value="Send">Send</button></div></form></div></div></div></div></section><footer class="text-center section-white"><div class="container"><div class="row"><div class="col-lg-12">Copyright © by Daniil Gentili (VAT 01647560299) - <a title="Privacy policy" target="_blank" rel="noopener noreferrer" href="https://www.iubenda.com/privacy-policy/84470792">Privacy Policy</a>, <a title="Cookie policy" target="_blank" rel="noopener noreferrer" href="https://www.iubenda.com/privacy-policy/84470792/cookie-policy">Cookie Policy</a></div></div></div></footer><!--[if lt IE 9]><script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script><![endif]--><script type="application/ld+json">{"name":"Daniil Gentili","description":"Senior software engineer with a vast experience in the development of complex, high-performance and massively parallel systems using Rust, Golang, C++, C, PHP.","author":"Daniil Gentili","@type":"WebSite","url":"https://daniil.it/","image":"https://daniil.it//img/ab79012abc195fba599b6e1867dc9b4a.svg","publisher":"Daniil Gentili","headline":"Daniil Gentili","@context":"http://schema.org"}</script></body></html> |