Help
RSS
API
Feed
Maltego
Contact
Domain > federicoterzi.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2019-11-27
104.31.84.47
(
ClassC
)
2026-02-18
172.67.138.191
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Wed, 18 Feb 2026 19:02:48 GMTContent-Type: text/html; charsetutf-8Transfer-Encoding: chunkedConnection: keep-aliveServer: cloudflareLast-Modified: Sun, 04 Jan 2026 09:26:29 GMTVary: Accept-EncodingAccess-Control-Allow-Origin: *Nel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}expires: Wed, 18 Feb 2026 19:12:48 GMTCache-Control: max-age600Report-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sKgDtsSX07a4vrzmoG8i4E76TA%2FFVgFuYX5zhnacAMv0590OJQceByAHZck0piJfZq509w7%2FRRlz0LrEU%2FpwLeniYzVDOZ8eLM1IFKQVUbaLM}}x-proxy-cache: MISSX-GitHub-Request-Id: 31D6:45046:13C533D:1640B6A:69960CD8cf-cache-status: DYNAMICCF-RAY: 9cffc7e62fc9e102-PDXalt-svc: h3:443; ma86400 !doctype html>!-- Hi there! Welcome to my website :) It seems you are interested in the source code, did you know that the website is open-source? See: https://github.com/federico-terzi/federico-terzi.github.io-->html data-n-head-ssr langen data-n-head%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D> head> title>Federico Terzi - A Software Engineering Journey/title>meta data-n-headssr charsetutf-8>meta data-n-headssr nameviewport contentwidthdevice-width,initial-scale1>meta data-n-headssr data-hidtitle nametitle contentFederico Terzi - A Software Engineering Journey>meta data-n-headssr data-hiddescription namedescription contentA Developer who loves building great products. Learn more about my journey as a software engineer, youll find technical articles, side-projects and much more!>meta data-n-headssr data-hidog:description nameog:description contentA Developer who loves building great products. Learn more about my journey as a software engineer, youll find technical articles, side-projects and much more!>meta data-n-headssr nameformat-detection contenttelephoneno>link data-n-headssr relstylesheet href/colors.css>link data-n-headssr relicon typeimage/x-icon href/favicon.ico>link data-n-headssr relicon typeimage/png href/favicon-32x32.png sizes32x32>link data-n-headssr relicon typeimage/png href/favicon-16x16.png sizes16x16>link data-n-headssr relmanifest href/site.webmanifest>link data-n-headssr relapple-touch-icon href/apple-touch-icon.png sizes180x180>link data-n-headssr relmask-icon href/safari-pinned-tab.svg color#5bbad5>link relpreload href/_nuxt/7800ae4.js asscript>link relpreload href/_nuxt/17ba505.js asscript>link relpreload href/_nuxt/4293a24.js asscript>link relpreload href/_nuxt/cd10c32.js asscript>link relpreload href/_nuxt/ebbc7b7.js asscript>style data-vue-ssr-idc3ae2b30:0 d75bdb94:0 fa7ff0ca:0 56b15182:0 7ab12987:0 68efd426:0 4c3275e1:0 af713024:0 ed7b8670:0 2f5d4658:0 18ecfca6:0 7c800bb4:0 ab0260f6:0 2ac5434c:0 b9a38c30:0 313ddf21:0 1b911c9d:0 fcd9470c:0 71a90360:0>@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_nuxt/fonts/inter-v7-latin-regular.33e43c3.eot);src:local(),url(/_nuxt/fonts/inter-v7-latin-regular.33e43c3.eot?#iefix) format(embedded-opentype),url(/_nuxt/fonts/inter-v7-latin-regular.5e6a773.woff2) format(woff2),url(/_nuxt/fonts/inter-v7-latin-regular.cefb4aa.woff) format(woff),url(/_nuxt/fonts/inter-v7-latin-regular.0e67589.ttf) format(truetype),url(/_nuxt/b8db5cf5416facf0c5ec4489d0ee9bbe.svg#Inter) format(svg)}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/_nuxt/fonts/inter-v7-latin-700.129e115.eot);src:local(),url(/_nuxt/fonts/inter-v7-latin-700.129e115.eot?#iefix) format(embedded-opentype),url(/_nuxt/fonts/inter-v7-latin-700.c2ceaa0.woff2) format(woff2),url(/_nuxt/fonts/inter-v7-latin-700.7f5a89b.woff) format(woff),url(/_nuxt/fonts/inter-v7-latin-700.6bb53f6.ttf) format(truetype),url(/_nuxt/0a85e1f2fd11f8afbfa155c7c5ec0a12.svg#Inter) format(svg)}@font-face{font-family:PT Serif;font-style:normal;font-weight:400;font-display:swap;src:url(/_nuxt/fonts/pt-serif-v16-latin-regular.ef9b698.eot);src:local(),url(/_nuxt/fonts/pt-serif-v16-latin-regular.ef9b698.eot?#iefix) format(embedded-opentype),url(/_nuxt/fonts/pt-serif-v16-latin-regular.511cda7.woff2) format(woff2),url(/_nuxt/fonts/pt-serif-v16-latin-regular.b4f2a8d.woff) format(woff),url(/_nuxt/fonts/pt-serif-v16-latin-regular.1602721.ttf) format(truetype),url(/_nuxt/2b24347634a541da72419674a1818855.svg#PTSerif) format(svg)}html{--content-primary:#1a1a1a;--content-primary-inverted:#fff;--accent-primary:#c84c32;--accent-secondary:#2e4364;--accent-tertiary:#ecdbba;--accent-menu:#2e4364;--background-primary:#fff;--background-elevated:#f1f1f1;--background-semitransparent:hsla(0,0%,100%,0.7);--details:rgba(26,26,26,0.1)}htmldata-themedark{--content-primary:#fff;--content-primary-inverted:#1a1a1a;--accent-primary:#ef6b50;--accent-secondary:#8bb8ff;--accent-tertiary:#ecdbba;--accent-menu:#fff;--background-primary:#000;--background-elevated:#343434;--background-semitransparent:rgba(0,0,0,0.7);--details:hsla(0,0%,100%,0.1)}.nuxt-progress{position:fixed;top:0;left:0;right:0;height:2px;width:0;opacity:1;transition:width .1s,opacity .4s;background-color:#000;z-index:999999}.nuxt-progress.nuxt-progress-notransition{transition:none}.nuxt-progress-failed{background-color:red}body,html{font-family:Inter,sans-serif;color:var(--content-primary);background-color:transparent;margin:0;padding:0}*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.main-layout-container{max-width:1512px;margin:auto}.main-layout-content{padding-top:95px;min-height:100vh}@media (max-width:992px){.main-layout-content{padding-top:50px;max-width:100vw;overflow-x:hidden}}.containerdata-v-71b3c000{position:fixed;top:0;left:0;right:0;bottom:0;width:100%;height:100%;overflow:hidden;z-index:-10;background-color:var(--background-primary);transition:all .5s ease}.blurreddata-v-71b3c000{filter:blur(50px);height:450px;width:450px}.animatedata-v-71b3c000{-webkit-animation:rotate-center-data-v-71b3c000 120s linear infinite both;animation:rotate-center-data-v-71b3c000 120s linear infinite both}.reddata-v-71b3c000{top:25vh;left:-10vw;background-color:var(--accent-primary)}.bluedata-v-71b3c000,.reddata-v-71b3c000{position:absolute;opacity:.15}.bluedata-v-71b3c000{top:0;right:-10vw;background-color:var(--accent-secondary)}.yellowdata-v-71b3c000{position:absolute;top:75vh;left:40vw;background-color:var(--accent-tertiary);opacity:.4}htmldata-themedark .yellowdata-v-71b3c000{opacity:.2}@media (max-width:992px){.blurreddata-v-71b3c000{height:300px;width:300px}}@-webkit-keyframes rotate-center-data-v-71b3c000{0%{transform:rotate(0) translateX(0) translateY(0)}50%{transform:rotate(180deg) translateX(300px) translateY(300px)}to{transform:rotate(1turn) translateX(0) translateY(0)}}@keyframes rotate-center-data-v-71b3c000{0%{transform:rotate(0) translateX(0) translateY(0)}50%{transform:rotate(180deg) translateX(300px) translateY(300px)}to{transform:rotate(1turn) translateX(0) translateY(0)}}.headerdata-v-47a7b6cf{position:fixed;top:0;right:0;left:0;z-index:20;background-color:transparent;box-shadow:none;transition:all .2s ease-in-out}html:not(data-scroll0) .headerdata-v-47a7b6cf{background-color:var(--background-primary);box-shadow:0 4px 43px rgba(0,0,0,.1)}.contentdata-v-47a7b6cf{display:flex;align-items:center;justify-content:space-between;padding:25px;max-width:1512px;margin:auto}.logo-linkdata-v-47a7b6cf{text-decoration:none}.detailsdata-v-47a7b6cf{display:flex}.logodata-v-47a7b6cf{margin-right:16px}.details-textdata-v-47a7b6cf{display:flex;flex-direction:column;justify-content:center}.namedata-v-47a7b6cf{font-size:24px;line-height:28px;color:var(--accent-primary)}.namedata-v-47a7b6cf,.taglinedata-v-47a7b6cf{font-weight:700;text-shadow:0 4px 4px rgba(0,0,0,.05)}.taglinedata-v-47a7b6cf{font-size:14px;line-height:17px;opacity:.8;color:var(--content-primary)}htmldata-themedark .taglinedata-v-47a7b6cf{opacity:.9}.menu-linkdata-v-47a7b6cf{position:relative;font-style:normal;font-weight:700;font-size:18px;line-height:22px;color:var(--accent-menu);margin-left:48px;text-decoration:none;transition:all .3s ease}.menu-linkdata-v-47a7b6cf:hover{color:var(--accent-primary)}.menu-linkdata-v-47a7b6cf:after{content:;position:absolute;display:block;width:100%;height:2px;bottom:-3px;left:0;background-color:var(--accent-secondary);transform:scaleX(0);opacity:0;transition:all .3s ease}.menu-linkdata-v-47a7b6cf:hover:after{transform:scaleX(1);opacity:1;background-color:var(--accent-primary)}.open-mobile-menudata-v-47a7b6cf{display:none}.mobile-menudata-v-47a7b6cf{position:fixed;top:0;left:0;right:0;bottom:0;background-color:var(--background-semitransparent);z-index:1000;box-shadow:0 3px 18px rgba(0,0,0,.1);display:flex;flex-direction:column;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);perspective:1000px}.menu-dividerdata-v-47a7b6cf{opacity:.05;border-bottom:2px solid #2e4364;margin-right:32px;margin-left:32px}.fade-enter-activedata-v-47a7b6cf,.fade-leave-activedata-v-47a7b6cf{transition:opacity .5s}.fade-enterdata-v-47a7b6cf,.fade-leave-todata-v-47a7b6cf{opacity:0;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}@media (max-width:992px){.namedata-v-47a7b6cf{font-size:14px;line-height:17px}.taglinedata-v-47a7b6cf{display:none}.details-textdata-v-47a7b6cf{opacity:0;transition:opacity .2s ease-in-out}html:not(data-scroll0) .details-textdata-v-47a7b6cf{opacity:1}.contentdata-v-47a7b6cf{padding:14px}.extended-menudata-v-47a7b6cf{display:none}.open-mobile-menudata-v-47a7b6cf{display:block;margin-right:4px;filter:drop-shadow(0 4px 16px rgba(0,0,0,.25))}.menu-linkdata-v-47a7b6cf{text-align:center;margin-left:0;margin-top:18px;margin-bottom:18px;-webkit-animation:slide-in-bck-center-data-v-47a7b6cf .7s cubic-bezier(.25,.46,.45,.94) both;animation:slide-in-bck-center-data-v-47a7b6cf .7s cubic-bezier(.25,.46,.45,.94) both}.mobile-menu-linksdata-v-47a7b6cf{display:flex;flex-direction:column;justify-content:center;flex:1}.mobile-menu-labeldata-v-47a7b6cf{text-align:center;font-size:12px;margin-bottom:100px}}@-webkit-keyframes slide-in-bck-center-data-v-47a7b6cf{0%{transform:translateZ(600px);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes slide-in-bck-center-data-v-47a7b6cf{0%{transform:translateZ(600px);opacity:0}to{transform:translateZ(0);opacity:1}}.containerdata-v-66baf38d{position:relative;width:46px;height:46px}.fdata-v-66baf38d,.tdata-v-66baf38d{position:absolute}.tdata-v-66baf38d{left:-3px;top:-1px}@media (max-width:992px){.containerdata-v-66baf38d,.fdata-v-66baf38d,.tdata-v-66baf38d{height:32px;width:32px}.tdata-v-66baf38d{left:-1px;top:0}}.jumbodata-v-26577059{display:flex;height:75vh;padding-top:95px;margin-top:-95px}.scroll-indicatordata-v-26577059{height:15vh}.home-dividerdata-v-26577059{opacity:.05;margin-top:160px;margin-bottom:160px}a.anchordata-v-26577059{display:block;position:relative;top:-120px;visibility:hidden}@media (max-width:992px){.jumbodata-v-26577059{flex-direction:column-reverse;justify-content:start;align-items:stretch;height:70vh}.jumbo-tag-linedata-v-26577059{margin-top:20px}.scroll-indicatordata-v-26577059{height:20vh}.home-dividerdata-v-26577059{border:1px solid #1a1a1a;margin:24px}}.jumbo-tag-containerdata-v-1bdd5506{display:flex;flex:1.5;align-items:center;justify-content:center;font-weight:700;font-size:48px;line-height:58px}.contentdata-v-1bdd5506{max-width:580px;text-shadow:0 4px 4px rgba(0,0,0,.05);padding-left:30px}.hi-and-namedata-v-1bdd5506{display:flex}.handdata-v-1bdd5506{height:48px;width:48px;-webkit-animation-name:wave-animation-data-v-1bdd5506;animation-name:wave-animation-data-v-1bdd5506;-webkit-animation-duration:2.5s;animation-duration:2.5s;-webkit-animation-delay:1s;animation-delay:1s;transform-origin:70% 70%;display:inline-block}.hi-containerdata-v-1bdd5506{-webkit-animation:hi-offset-data-v-1bdd5506 4s cubic-bezier(.23,1,.32,1) both;animation:hi-offset-data-v-1bdd5506 4s cubic-bezier(.23,1,.32,1) both}.namedata-v-1bdd5506{color:var(--accent-primary)}.name-containerdata-v-1bdd5506{-webkit-animation:slide-in-blurred-right-data-v-1bdd5506 1s cubic-bezier(.23,1,.32,1) both;animation:slide-in-blurred-right-data-v-1bdd5506 1s cubic-bezier(.23,1,.32,1) both;-webkit-animation-delay:2.5s;animation-delay:2.5s}.descriptiondata-v-1bdd5506{-webkit-animation:slide-in-blurred-bottom-data-v-1bdd5506 1.5s cubic-bezier(.23,1,.32,1) both;animation:slide-in-blurred-bottom-data-v-1bdd5506 1.5s cubic-bezier(.23,1,.32,1) both;-webkit-animation-delay:3.5s;animation-delay:3.5s}.secondary-highlightdata-v-1bdd5506{color:var(--accent-secondary);-webkit-text-decoration-line:underline;text-decoration-line:underline}@media (max-width:992px){.jumbo-tag-containerdata-v-1bdd5506{font-size:28px;line-height:34px;flex:1;align-items:flex-start}.contentdata-v-1bdd5506{text-align:center;padding-left:0}.handdata-v-1bdd5506{height:28px;width:28px}.hi-and-namedata-v-1bdd5506{justify-content:center}}@-webkit-keyframes wave-animation-data-v-1bdd5506{0%{transform:rotate(0)}10%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}30%{transform:rotate(14deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}60%{transform:rotate(0)}to{transform:rotate(0)}}@keyframes wave-animation-data-v-1bdd5506{0%{transform:rotate(0)}10%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}30%{transform:rotate(14deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}60%{transform:rotate(0)}to{transform:rotate(0)}}@-webkit-keyframes slide-in-blurred-right-data-v-1bdd5506{0%{transform:translateX(100px) scaleX(1.5) scaleY(.2);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0) scaleY(1) scaleX(1);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slide-in-blurred-right-data-v-1bdd5506{0%{transform:translateX(100px) scaleX(1.5) scaleY(.2);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0) scaleY(1) scaleX(1);transform-origin:50% 50%;filter:blur(0);opacity:1}}@-webkit-keyframes slide-in-blurred-bottom-data-v-1bdd5506{0%{transform:translateY(100px) scaleY(1.5);transform-origin:50% 100%;filter:blur(40px);opacity:0}to{transform:translateY(0) scaleY(1);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slide-in-blurred-bottom-data-v-1bdd5506{0%{transform:translateY(100px) scaleY(1.5);transform-origin:50% 100%;filter:blur(40px);opacity:0}to{transform:translateY(0) scaleY(1);transform-origin:50% 50%;filter:blur(0);opacity:1}}@-webkit-keyframes hi-offset-data-v-1bdd5506{0%{transform:translateX(25vw) translateY(40px) scale(2);transform-origin:50% 100%;filter:blur(40px);opacity:0}50%{transform:translateX(25vw) translateY(40px) scale(2);filter:blur(0);opacity:1}to{transform:translateX(0) translateY(0) scale(1)}}@keyframes hi-offset-data-v-1bdd5506{0%{transform:translateX(25vw) translateY(40px) scale(2);transform-origin:50% 100%;filter:blur(40px);opacity:0}50%{transform:translateX(25vw) translateY(40px) scale(2);filter:blur(0);opacity:1}to{transform:translateX(0) translateY(0) scale(1)}}.containerdata-v-67e39d8e{display:flex;align-items:center;justify-content:center;flex:1;z-index:2}.jumbo-imagedata-v-67e39d8e{width:530px;height:580px;background-position:50%;background-size:contain;background-repeat:no-repeat;background-image:url(/_nuxt/img/jumbo-image-light.e7533b5.png);-webkit-animation:fade-in-data-v-67e39d8e 1.2s cubic-bezier(.39,.575,.565,1) both;animation:fade-in-data-v-67e39d8e 1.2s cubic-bezier(.39,.575,.565,1) both;-webkit-animation-delay:2s;animation-delay:2s;cursor:pointer}htmldata-themedark .jumbo-imagedata-v-67e39d8e{background-image:url(/_nuxt/img/jumbo-image-dark.117a55b.png)}@media (max-width:992px){.containerdata-v-67e39d8e{flex:1.5}.jumbo-imagedata-v-67e39d8e{width:55vw;height:40vh}}@-webkit-keyframes fade-in-data-v-67e39d8e{0%{opacity:0}to{opacity:1}}@keyframes fade-in-data-v-67e39d8e{0%{opacity:0}to{opacity:1}}.containerdata-v-0cd7e026{display:flex;flex-direction:column;align-items:center;-webkit-animation:fade-in-data-v-0cd7e026 1.2s cubic-bezier(.39,.575,.565,1) both;animation:fade-in-data-v-0cd7e026 1.2s cubic-bezier(.39,.575,.565,1) both;-webkit-animation-delay:5s;animation-delay:5s;cursor:pointer}.labeldata-v-0cd7e026{font-size:14px;line-height:17px;font-weight:700;text-align:center;color:var(--accent-menu);margin-bottom:12px;-webkit-animation:slide-bottom-data-v-0cd7e026 2s infinite both;animation:slide-bottom-data-v-0cd7e026 2s infinite both;-webkit-animation-delay:.2s;animation-delay:.2s}.arrowsdata-v-0cd7e026{position:relative;width:30px}.arrowdata-v-0cd7e026{position:absolute;-webkit-animation:slide-bottom-data-v-0cd7e026 2s infinite both;animation:slide-bottom-data-v-0cd7e026 2s infinite both}.yellowdata-v-0cd7e026{top:0;left:-2px}.reddata-v-0cd7e026{top:5px;-webkit-animation-delay:.2s;animation-delay:.2s}@-webkit-keyframes slide-bottom-data-v-0cd7e026{0%{transform:translateY(0)}70%{transform:translateY(10px)}to{transform:translateY(0)}}@keyframes slide-bottom-data-v-0cd7e026{0%{transform:translateY(0)}70%{transform:translateY(10px)}to{transform:translateY(0)}}@-webkit-keyframes fade-in-data-v-0cd7e026{0%{opacity:0}to{opacity:1}}@keyframes fade-in-data-v-0cd7e026{0%{opacity:0}to{opacity:1}}.contentdata-v-2d824b8a{font-size:18px;line-height:22px}.content>pdata-v-2d824b8a:first-child{margin-top:0}.reddata-v-2d824b8a{color:var(--accent-primary)}.bluedata-v-2d824b8a,.reddata-v-2d824b8a{font-weight:700}.bluedata-v-2d824b8a{color:var(--accent-secondary)}.no-underlinedata-v-2d824b8a{text-decoration:none}adata-v-2d824b8a{text-underline-offset:2px;text-decoration-thickness:2px}.containerdata-v-7f1eb96d{display:flex;align-items:stretch;padding:28px}.title-coldata-v-7f1eb96d{display:flex;flex:1;justify-content:flex-end;font-style:normal;font-weight:700;font-size:28px;line-height:34px;color:var(--accent-menu);opacity:.01}.title-arrowdata-v-7f1eb96d{margin-right:8px}.content-coldata-v-7f1eb96d{opacity:.01;flex:1.5}.animate-leftdata-v-7f1eb96d{-webkit-animation:slide-in-blurred-left-data-v-7f1eb96d 1.5s cubic-bezier(.23,1,.32,1) both;animation:slide-in-blurred-left-data-v-7f1eb96d 1.5s cubic-bezier(.23,1,.32,1) both}.animate-rightdata-v-7f1eb96d{-webkit-animation:slide-in-blurred-right-data-v-7f1eb96d 1.5s cubic-bezier(.23,1,.32,1) both;animation:slide-in-blurred-right-data-v-7f1eb96d 1.5s cubic-bezier(.23,1,.32,1) both}.contentdata-v-7f1eb96d{max-width:450px}.dividerdata-v-7f1eb96d{opacity:.1;border:1px solid #1a1a1a;margin-right:48px;margin-left:48px}@media (max-width:992px){.containerdata-v-7f1eb96d{flex-direction:column}.title-coldata-v-7f1eb96d{justify-content:flex-start;margin-left:-8px;margin-bottom:24px}.dividerdata-v-7f1eb96d{display:none}}@-webkit-keyframes slide-in-blurred-right-data-v-7f1eb96d{0%{transform:translateX(200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slide-in-blurred-right-data-v-7f1eb96d{0%{transform:translateX(200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}@-webkit-keyframes slide-in-blurred-left-data-v-7f1eb96d{0%{transform:translateX(-200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slide-in-blurred-left-data-v-7f1eb96d{0%{transform:translateX(-200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}.contentdata-v-77ede1ec{display:flex}.dividerdata-v-77ede1ec{opacity:.1;border:1px solid #1a1a1a;margin-right:36px;margin-left:36px}.view-all-linkdata-v-77ede1ec{text-align:center;width:100%;font-weight:700;color:var(--accent-menu);text-underline-offset:2px;text-decoration-thickness:2px;margin-top:48px}.post-linkdata-v-77ede1ec{text-decoration:none;color:var(--content-primary);flex:1}@media (max-width:992px){.contentdata-v-77ede1ec{flex-direction:column}.dividerdata-v-77ede1ec{margin:24px 0}}.regular-section-containerdata-v-2b471269{display:flex;flex-direction:column;align-items:stretch;padding:28px}.title-containerdata-v-2b471269{display:flex;justify-content:center;font-style:normal;font-weight:700;font-size:28px;line-height:34px;color:var(--accent-menu);opacity:.01}.title-arrowdata-v-2b471269{margin-right:8px}.content-containerdata-v-2b471269{opacity:.01;margin-top:62px}.section-contentdata-v-2b471269{display:flex;flex-direction:column;max-width:1000px;margin:auto}.animate-leftdata-v-2b471269{-webkit-animation:slide-in-blurred-left-data-v-2b471269 1.5s cubic-bezier(.23,1,.32,1) both;animation:slide-in-blurred-left-data-v-2b471269 1.5s cubic-bezier(.23,1,.32,1) both}.animate-rightdata-v-2b471269{-webkit-animation:slide-in-blurred-right-data-v-2b471269 1.5s cubic-bezier(.23,1,.32,1) both;animation:slide-in-blurred-right-data-v-2b471269 1.5s cubic-bezier(.23,1,.32,1) both}@media (max-width:992px){.containerdata-v-2b471269{flex-direction:column}.title-containerdata-v-2b471269{justify-content:flex-start;margin-left:-8px;margin-bottom:24px}.content-containerdata-v-2b471269{margin-top:12px}}@-webkit-keyframes slide-in-blurred-right-data-v-2b471269{0%{transform:translateX(200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slide-in-blurred-right-data-v-2b471269{0%{transform:translateX(200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}@-webkit-keyframes slide-in-blurred-left-data-v-2b471269{0%{transform:translateX(-200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slide-in-blurred-left-data-v-2b471269{0%{transform:translateX(-200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}.contentdata-v-173c18e8{display:flex;padding:0;flex-direction:column}.datedata-v-173c18e8{font-size:12px;line-height:15px}.titledata-v-173c18e8{font-weight:700;font-size:18px;margin-bottom:0;margin-top:8px}.snippetdata-v-173c18e8,.titledata-v-173c18e8{line-height:22px}.snippetdata-v-173c18e8{font-size:15px;font-family:PT Serif}.contentdata-v-0cc71886{font-size:18px;line-height:22px}.content>pdata-v-0cc71886:first-child{margin-top:0}.emaildata-v-0cc71886{display:block;padding:16px;text-align:center}.bluedata-v-0cc71886{font-weight:700;color:var(--accent-secondary)}adata-v-0cc71886{text-underline-offset:2px;text-decoration-thickness:2px}.socialdata-v-0cc71886{display:flex;flex:1;justify-content:center;align-items:center;margin:16px 0}.socialsdata-v-0cc71886{display:flex;width:100%}.socials adata-v-0cc71886{font-weight:700;color:var(--accent-secondary);margin-left:10px}.socials pathdata-v-0cc71886{stroke:var(--accent-secondary)}.footer-containerdata-v-d5d2bd86{font-size:14px;line-height:17px;text-align:center;color:var(--accent-menu);margin-top:40px;padding-right:16px;padding-left:16px}.bolddata-v-d5d2bd86{font-weight:700}.reddata-v-d5d2bd86{color:var(--accent-primary)}.social-bar-container{position:fixed;left:24px;bottom:24px;background:var(--background-elevated);border:1px solid var(--details);box-sizing:border-box;box-shadow:0 3px 8px 2px rgba(0,0,0,.1);border-radius:4px;display:flex;justify-content:space-evenly;width:360px;padding-top:10px;padding-bottom:10px;transition:all .3s ease}htmldata-scrolled-to-bottomtrue .social-bar-container{opacity:0;transform:translateY(100px)}.social-bar-container a{display:flex;align-items:center;filter:drop-shadow(0 4px 6px rgba(0,0,0,.25));transition:all .3s ease}.social-bar-container a:hover{transform:scale(1.2) translateY(-3px)}.social-bar-container a path{stroke:var(--accent-primary)}.social-bar-divider{border-left:1px solid var(--details)}@media (max-width:992px){.social-bar-container{left:0;right:0;bottom:0;width:100%;border-radius:0}}/style>link relpreload href/_nuxt/static/1767518764/state.js asscript>link relpreload href/_nuxt/static/1767518764/payload.js asscript>link relpreload href/_nuxt/static/1767518764/manifest.js asscript> script>const debouncet>{let c;return(...e)>{c&&cancelAnimationFrame(c),crequestAnimationFrame(()>{t(...e)})}},handleScroll()>{document.documentElement.dataset.scrollwindow.scrollY,document.documentElement.dataset.scrolledToBottomwindow.innerHeight+window.scrollY>document.body?.offsetHeight?true:false};function switchTheme(e){darke?document.documentElement.setAttribute(data-theme,dark):document.documentElement.setAttribute(data-theme,light)}document.addEventListener(scroll,debounce(handleScroll),{passive:!0}),handleScroll();const prefersDarkSchemewindow.matchMedia((prefers-color-scheme: dark));prefersDarkScheme.matches&&switchTheme(dark),window.matchMedia((prefers-color-scheme: dark)).addListener(e>e.matches?switchTheme(dark):switchTheme(light))/script> /head> body> div data-server-renderedtrue id__nuxt>!---->div id__layout>div classmain-layout-container>div classcontainer data-v-71b3c000>div classblurred red animate data-v-71b3c000>/div> div classblurred yellow animate data-v-71b3c000>/div> div classblurred blue animate data-v-71b3c000>/div>/div> div idheader classheader data-v-47a7b6cf>div classcontent data-v-47a7b6cf>a href/ aria-currentpage classlogo-link nuxt-link-exact-active nuxt-link-active data-v-47a7b6cf>div classdetails data-v-47a7b6cf>div classcontainer logo data-v-66baf38d data-v-47a7b6cf>svg width51 height47 viewBox0 0 51 47 fillnone xmlnshttp://www.w3.org/2000/svg classf data-v-66baf38d data-v-66baf38d>g filterurl(#filter0_d_15_34) data-v-66baf38d data-v-66baf38d>path dM2.09039 44.1666V2H48L2.09039 44.1666Z fill#C84C32 data-v-66baf38d data-v-66baf38d>/path>/g>defs data-v-66baf38d data-v-66baf38d>filter idfilter0_d_15_34 x0.0543151 y0.506876 width49.9818 height46.2388 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-66baf38d data-v-66baf38d>feFlood flood-opacity0 resultBackgroundImageFix data-v-66baf38d data-v-66baf38d>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-66baf38d data-v-66baf38d>/feColorMatrix>feOffset dy0.542954 data-v-66baf38d data-v-66baf38d>/feOffset>feGaussianBlur stdDeviation1.01804 data-v-66baf38d data-v-66baf38d>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-66baf38d data-v-66baf38d>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0 data-v-66baf38d data-v-66baf38d>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_15_34 data-v-66baf38d data-v-66baf38d>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_15_34 resultshape data-v-66baf38d data-v-66baf38d>/feBlend>/filter>/defs>/svg> svg width53 height49 viewBox0 0 53 49 fillnone xmlnshttp://www.w3.org/2000/svg classt data-v-66baf38d data-v-66baf38d>g filterurl(#filter0_d_15_35) data-v-66baf38d data-v-66baf38d>path dM28.0452 45.0836L5 3H51L28.0452 45.0836Z fillurl(#paint0_linear_15_35) data-v-66baf38d data-v-66baf38d>/path>/g>defs data-v-66baf38d data-v-66baf38d>filter idfilter0_d_15_35 x0.656367 y0.556706 width51.9725 height48.0561 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-66baf38d data-v-66baf38d>feFlood flood-opacity0 resultBackgroundImageFix data-v-66baf38d data-v-66baf38d>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-66baf38d data-v-66baf38d>/feColorMatrix>feOffset dx-1.35739 dy0.542954 data-v-66baf38d data-v-66baf38d>/feOffset>feGaussianBlur stdDeviation1.49312 data-v-66baf38d data-v-66baf38d>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-66baf38d data-v-66baf38d>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0 data-v-66baf38d data-v-66baf38d>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_15_35 data-v-66baf38d data-v-66baf38d>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_15_35 resultshape data-v-66baf38d data-v-66baf38d>/feBlend>/filter>linearGradient idpaint0_linear_15_35 x128 y13 x228 y245.0836 gradientUnitsuserSpaceOnUse data-v-66baf38d data-v-66baf38d>stop stop-color#ECDBBA stop-opacity0.49 data-v-66baf38d data-v-66baf38d>/stop>stop offset1 stop-color#ECDBBA data-v-66baf38d data-v-66baf38d>/stop>/linearGradient>/defs>/svg>/div> div classdetails-text data-v-47a7b6cf>span classname data-v-47a7b6cf>Federico Terzi/span> span classtagline data-v-47a7b6cf>A Software Engineering Journey/span>/div>/div>/a> div classextended-menu data-v-47a7b6cf>a href/#about classmenu-link data-v-47a7b6cf>About/a>a href/projects classmenu-link data-v-47a7b6cf>Projects/a>a href/blog classmenu-link data-v-47a7b6cf>Blog/a>a href/talks classmenu-link data-v-47a7b6cf>Talks/a>a href/contact-me classmenu-link data-v-47a7b6cf>Contact me/a>/div> div classopen-mobile-menu data-v-47a7b6cf>svg width26 height18 viewBox0 0 26 18 fillnone xmlnshttp://www.w3.org/2000/svg classmenu-icon data-v-47a7b6cf data-v-47a7b6cf>path dM2 9.25H23.75 stroke#C84C32 stroke-width3 stroke-linecapround stroke-linejoinround data-v-47a7b6cf data-v-47a7b6cf>/path>path dM2 2H23.75 stroke#C84C32 stroke-width3 stroke-linecapround stroke-linejoinround data-v-47a7b6cf data-v-47a7b6cf>/path>path dM2 16.5H23.75 stroke#C84C32 stroke-width3 stroke-linecapround stroke-linejoinround data-v-47a7b6cf data-v-47a7b6cf>/path>/svg>/div> !---->/div>/div> div classmain-layout-content>div data-v-26577059>div classjumbo data-v-26577059>div classjumbo-tag-container jumbo-tag-line data-v-1bdd5506 data-v-26577059>div classcontent data-v-1bdd5506>div classhi-and-name data-v-1bdd5506>div classhi-container data-v-1bdd5506>span data-v-1bdd5506>Hi /span> img src/_nuxt/img/hand.7edad81.png classhand wave data-v-1bdd5506>/div> div classname-container data-v-1bdd5506>span data-v-1bdd5506>, /span> span data-v-1bdd5506>I’m /span> span classname data-v-1bdd5506>Federico/span> span data-v-1bdd5506>, /span>/div>/div> div classdescription data-v-1bdd5506> a developer who span classsecondary-highlight data-v-1bdd5506>loves/span> building span classsecondary-highlight data-v-1bdd5506>great/span> products. /div>/div>/div> div classcontainer data-v-67e39d8e data-v-26577059>div classjumbo-image data-v-67e39d8e>/div>/div>/div> div classcontainer scroll-indicator data-v-0cd7e026 data-v-26577059>span classlabel data-v-0cd7e026>Scroll to know more/span> div classarrows data-v-0cd7e026>svg width34 height20 viewBox0 0 34 20 fillnone xmlnshttp://www.w3.org/2000/svg classred arrow data-v-0cd7e026 data-v-0cd7e026>g filterurl(#filter0_d_15_70) data-v-0cd7e026 data-v-0cd7e026>path dM17 17.1176L2.11765 2.11765H32L17 17.1176Z fill#C84C32 data-v-0cd7e026 data-v-0cd7e026>/path>/g>defs data-v-0cd7e026 data-v-0cd7e026>filter idfilter0_d_15_70 x0.352941 y0.823528 width33.4118 height18.5294 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-0cd7e026 data-v-0cd7e026>feFlood flood-opacity0 resultBackgroundImageFix data-v-0cd7e026 data-v-0cd7e026>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-0cd7e026 data-v-0cd7e026>/feColorMatrix>feOffset dy0.470588 data-v-0cd7e026 data-v-0cd7e026>/feOffset>feGaussianBlur stdDeviation0.882353 data-v-0cd7e026 data-v-0cd7e026>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-0cd7e026 data-v-0cd7e026>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0 data-v-0cd7e026 data-v-0cd7e026>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_15_70 data-v-0cd7e026 data-v-0cd7e026>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_15_70 resultshape data-v-0cd7e026 data-v-0cd7e026>/feBlend>/filter>/defs>/svg> svg width36 height21 viewBox0 0 36 21 fillnone xmlnshttp://www.w3.org/2000/svg classyellow arrow data-v-0cd7e026 data-v-0cd7e026>g filterurl(#filter0_d_15_71) data-v-0cd7e026 data-v-0cd7e026>path dM19.0295 17.8235L4 3H34L19.0295 17.8235Z fillurl(#paint0_linear_15_71) shape-renderingcrispEdges data-v-0cd7e026 data-v-0cd7e026>/path>/g>defs data-v-0cd7e026 data-v-0cd7e026>filter idfilter0_d_15_71 x0.235294 y0.882353 width35.1765 height20 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-0cd7e026 data-v-0cd7e026>feFlood flood-opacity0 resultBackgroundImageFix data-v-0cd7e026 data-v-0cd7e026>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-0cd7e026 data-v-0cd7e026>/feColorMatrix>feOffset dx-1.17647 dy0.470588 data-v-0cd7e026 data-v-0cd7e026>/feOffset>feGaussianBlur stdDeviation1.29412 data-v-0cd7e026 data-v-0cd7e026>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-0cd7e026 data-v-0cd7e026>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0 data-v-0cd7e026 data-v-0cd7e026>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_15_71 data-v-0cd7e026 data-v-0cd7e026>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_15_71 resultshape data-v-0cd7e026 data-v-0cd7e026>/feBlend>/filter>linearGradient idpaint0_linear_15_71 x119 y13 x219 y217.8235 gradientUnitsuserSpaceOnUse data-v-0cd7e026 data-v-0cd7e026>stop stop-color#ECDBBA stop-opacity0.49 data-v-0cd7e026 data-v-0cd7e026>/stop>stop offset1 stop-color#ECDBBA data-v-0cd7e026 data-v-0cd7e026>/stop>/linearGradient>/defs>/svg>/div>/div> div classhome-divider data-v-26577059>/div> a nameabout classanchor data-v-26577059>/a> div idabout-section classcontainer data-v-7f1eb96d data-v-2d824b8a data-v-26577059>div classtitle-col data-v-7f1eb96d>svg width25 height37 viewBox0 0 25 37 fillnone xmlnshttp://www.w3.org/2000/svg classtitle-arrow data-v-7f1eb96d data-v-7f1eb96d>g filterurl(#filter0_d_27_129) data-v-7f1eb96d data-v-7f1eb96d>path dM23.1176 18L8.11765 32.8823L8.11764 2.99997L23.1176 18Z fill#C84C32 data-v-7f1eb96d data-v-7f1eb96d>/path>/g>g filterurl(#filter1_d_27_129) data-v-7f1eb96d data-v-7f1eb96d>path dM18.8235 17.9705L4 33L4 3L18.8235 17.9705Z fillurl(#paint0_linear_27_129) shape-renderingcrispEdges data-v-7f1eb96d data-v-7f1eb96d>/path>/g>defs data-v-7f1eb96d data-v-7f1eb96d>filter idfilter0_d_27_129 x6.35294 y1.70588 width18.5294 height33.4117 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-7f1eb96d data-v-7f1eb96d>feFlood flood-opacity0 resultBackgroundImageFix data-v-7f1eb96d data-v-7f1eb96d>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feOffset dy0.470588 data-v-7f1eb96d data-v-7f1eb96d>/feOffset>feGaussianBlur stdDeviation0.882353 data-v-7f1eb96d data-v-7f1eb96d>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-7f1eb96d data-v-7f1eb96d>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0 data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_27_129 data-v-7f1eb96d data-v-7f1eb96d>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_27_129 resultshape data-v-7f1eb96d data-v-7f1eb96d>/feBlend>/filter>filter idfilter1_d_27_129 x0.235294 y0.882353 width20 height35.1765 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-7f1eb96d data-v-7f1eb96d>feFlood flood-opacity0 resultBackgroundImageFix data-v-7f1eb96d data-v-7f1eb96d>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feOffset dx-1.17647 dy0.470588 data-v-7f1eb96d data-v-7f1eb96d>/feOffset>feGaussianBlur stdDeviation1.29412 data-v-7f1eb96d data-v-7f1eb96d>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-7f1eb96d data-v-7f1eb96d>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0 data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_27_129 data-v-7f1eb96d data-v-7f1eb96d>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_27_129 resultshape data-v-7f1eb96d data-v-7f1eb96d>/feBlend>/filter>linearGradient idpaint0_linear_27_129 x14 y118 x218.8235 y218 gradientUnitsuserSpaceOnUse data-v-7f1eb96d data-v-7f1eb96d>stop stop-color#ECDBBA stop-opacity0.49 data-v-7f1eb96d data-v-7f1eb96d>/stop>stop offset1 stop-color#ECDBBA data-v-7f1eb96d data-v-7f1eb96d>/stop>/linearGradient>/defs>/svg> span data-v-7f1eb96d>About me/span>/div> div classdivider data-v-7f1eb96d>/div> div classcontent-col data-v-7f1eb96d>div classcontent data-v-7f1eb96d>div classcontent data-v-7f1eb96d data-v-2d824b8a>p data-v-7f1eb96d data-v-2d824b8a> I’m a Software Engineer specialized in span classred data-v-7f1eb96d data-v-2d824b8a>Front-end/span> development and span classblue data-v-7f1eb96d data-v-2d824b8a>System programming/span>, with a Master’s degree in Computer Engineering. /p> p data-v-7f1eb96d data-v-2d824b8a> I’m span classred data-v-7f1eb96d data-v-2d824b8a>product-oriented/span>. Despite loving the technical side, I also deeply care about user experiences and design. /p> p data-v-7f1eb96d data-v-2d824b8a> Im currently working on a hrefhttps://borumi.com target_blank classred data-v-7f1eb96d data-v-2d824b8a>Borumi/a>, a video editor that allows creators to produce content in a fraction of the time. Im also the creator of a hrefhttps://espanso.org target_blank classred data-v-7f1eb96d data-v-2d824b8a>Espanso/a>, an open-source text expander used by thousands of people every day. You can find the others a href/projects classblue data-v-2d824b8a>here/a>. /p> p data-v-7f1eb96d data-v-2d824b8a> If you like technical topics, you might also enjoy my a href/blog classred data-v-2d824b8a>Blog/a>, a href/talks classred data-v-2d824b8a>Talks/a> and a hrefhttps://www.youtube.com/c/FedericoTerzi target_blank classred data-v-7f1eb96d data-v-2d824b8a>YouTube/a> channel. /p> p data-v-7f1eb96d data-v-2d824b8a> I really enjoy span classblue data-v-7f1eb96d data-v-2d824b8a>books/span>. I’m currently reading a hrefhttps://www.amazon.com/High-Performance-Browser-Networking-performance/dp/1449344763 target_blank classblue no-underline data-v-7f1eb96d data-v-2d824b8a>High Performance Browser Networking/a>, and I’ve previously read a hrefhttps://www.zero2prod.com/ target_blank classblue no-underline data-v-7f1eb96d data-v-2d824b8a>Zero To Production In Rust/a>. You can also check out my a href/books classred data-v-2d824b8a>book recommendations/a>. /p> p data-v-7f1eb96d data-v-2d824b8a> Im based in span classred data-v-7f1eb96d data-v-2d824b8a>Stockholm/span> (Sweden), though Im originally from Italy. /p>/div>/div>/div>/div> div classhome-divider data-v-26577059>/div> div idabout-section classregular-section-container data-v-2b471269 data-v-77ede1ec data-v-26577059>div classtitle-container data-v-2b471269>svg width25 height37 viewBox0 0 25 37 fillnone xmlnshttp://www.w3.org/2000/svg classtitle-arrow data-v-2b471269 data-v-2b471269>g filterurl(#filter0_d_27_129) data-v-2b471269 data-v-2b471269>path dM23.1176 18L8.11765 32.8823L8.11764 2.99997L23.1176 18Z fill#C84C32 data-v-2b471269 data-v-2b471269>/path>/g>g filterurl(#filter1_d_27_129) data-v-2b471269 data-v-2b471269>path dM18.8235 17.9705L4 33L4 3L18.8235 17.9705Z fillurl(#paint0_linear_27_129) shape-renderingcrispEdges data-v-2b471269 data-v-2b471269>/path>/g>defs data-v-2b471269 data-v-2b471269>filter idfilter0_d_27_129 x6.35294 y1.70588 width18.5294 height33.4117 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-2b471269 data-v-2b471269>feFlood flood-opacity0 resultBackgroundImageFix data-v-2b471269 data-v-2b471269>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-2b471269 data-v-2b471269>/feColorMatrix>feOffset dy0.470588 data-v-2b471269 data-v-2b471269>/feOffset>feGaussianBlur stdDeviation0.882353 data-v-2b471269 data-v-2b471269>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-2b471269 data-v-2b471269>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0 data-v-2b471269 data-v-2b471269>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_27_129 data-v-2b471269 data-v-2b471269>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_27_129 resultshape data-v-2b471269 data-v-2b471269>/feBlend>/filter>filter idfilter1_d_27_129 x0.235294 y0.882353 width20 height35.1765 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-2b471269 data-v-2b471269>feFlood flood-opacity0 resultBackgroundImageFix data-v-2b471269 data-v-2b471269>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-2b471269 data-v-2b471269>/feColorMatrix>feOffset dx-1.17647 dy0.470588 data-v-2b471269 data-v-2b471269>/feOffset>feGaussianBlur stdDeviation1.29412 data-v-2b471269 data-v-2b471269>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-2b471269 data-v-2b471269>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0 data-v-2b471269 data-v-2b471269>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_27_129 data-v-2b471269 data-v-2b471269>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_27_129 resultshape data-v-2b471269 data-v-2b471269>/feBlend>/filter>linearGradient idpaint0_linear_27_129 x14 y118 x218.8235 y218 gradientUnitsuserSpaceOnUse data-v-2b471269 data-v-2b471269>stop stop-color#ECDBBA stop-opacity0.49 data-v-2b471269 data-v-2b471269>/stop>stop offset1 stop-color#ECDBBA data-v-2b471269 data-v-2b471269>/stop>/linearGradient>/defs>/svg> span data-v-2b471269>Latest posts/span>/div> div classcontent-container data-v-2b471269>div classsection-content data-v-2b471269>div classcontent data-v-2b471269 data-v-77ede1ec>a href/blog/understanding-crdts-improving-our-set-chapter-2 classpost-link data-v-77ede1ec>div classcontent data-v-173c18e8 data-v-77ede1ec>span classdate data-v-173c18e8>February 25th, 2024/span> h3 classtitle data-v-173c18e8>Understanding CRDTs: Improving our Set (Chapter 2)/h3> p classsnippet data-v-173c18e8> In the previous article, we implemented a basic Set with support for additions and removals, as well as basic CRDT semantics. Despite working in simple cases, we also highlighted two significant limitations: /p>/div>/a> div classdivider data-v-2b471269 data-v-77ede1ec>/div>a href/blog/screencapturekit-failing-to-capture-the-entire-display classpost-link data-v-77ede1ec>div classcontent data-v-173c18e8 data-v-77ede1ec>span classdate data-v-173c18e8>January 27th, 2024/span> h3 classtitle data-v-173c18e8>ScreenCaptureKit failing to capture the entire Display/h3> p classsnippet data-v-173c18e8> I’ve just spend a good portion of this afternoon trying to understand why Apple’s ScreenCaptureKit did not behave as expected. My goal was simple: creating the simplest possible program to capture the entire display and analyse the generated buffers. /p>/div>/a> div classdivider data-v-2b471269 data-v-77ede1ec>/div>a href/blog/understanding-crdts-a-gentle-introduction-chapter-1 classpost-link data-v-77ede1ec>div classcontent data-v-173c18e8 data-v-77ede1ec>span classdate data-v-173c18e8>January 19th, 2024/span> h3 classtitle data-v-173c18e8>Understanding CRDTs: A Gentle Introduction (Chapter 1)/h3> p classsnippet data-v-173c18e8> In the past two months, I’ve been diving deeper into the realm of distributed systems. The catalyst that started my research was discovering the world of local-first applications, a class of software that allows users to access and modify their data locally, while seamlessly synchronizing across devices, even in the face of connection failures. /p>/div>/a> !---->/div> a href/blog classview-all-link data-v-77ede1ec>View all posts/a>/div>/div>/div> div classhome-divider data-v-26577059>/div> div idcontact-section classcontainer data-v-7f1eb96d data-v-0cc71886 data-v-26577059>div classtitle-col data-v-7f1eb96d>svg width25 height37 viewBox0 0 25 37 fillnone xmlnshttp://www.w3.org/2000/svg classtitle-arrow data-v-7f1eb96d data-v-7f1eb96d>g filterurl(#filter0_d_27_129) data-v-7f1eb96d data-v-7f1eb96d>path dM23.1176 18L8.11765 32.8823L8.11764 2.99997L23.1176 18Z fill#C84C32 data-v-7f1eb96d data-v-7f1eb96d>/path>/g>g filterurl(#filter1_d_27_129) data-v-7f1eb96d data-v-7f1eb96d>path dM18.8235 17.9705L4 33L4 3L18.8235 17.9705Z fillurl(#paint0_linear_27_129) shape-renderingcrispEdges data-v-7f1eb96d data-v-7f1eb96d>/path>/g>defs data-v-7f1eb96d data-v-7f1eb96d>filter idfilter0_d_27_129 x6.35294 y1.70588 width18.5294 height33.4117 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-7f1eb96d data-v-7f1eb96d>feFlood flood-opacity0 resultBackgroundImageFix data-v-7f1eb96d data-v-7f1eb96d>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feOffset dy0.470588 data-v-7f1eb96d data-v-7f1eb96d>/feOffset>feGaussianBlur stdDeviation0.882353 data-v-7f1eb96d data-v-7f1eb96d>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-7f1eb96d data-v-7f1eb96d>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0 data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_27_129 data-v-7f1eb96d data-v-7f1eb96d>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_27_129 resultshape data-v-7f1eb96d data-v-7f1eb96d>/feBlend>/filter>filter idfilter1_d_27_129 x0.235294 y0.882353 width20 height35.1765 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-7f1eb96d data-v-7f1eb96d>feFlood flood-opacity0 resultBackgroundImageFix data-v-7f1eb96d data-v-7f1eb96d>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feOffset dx-1.17647 dy0.470588 data-v-7f1eb96d data-v-7f1eb96d>/feOffset>feGaussianBlur stdDeviation1.29412 data-v-7f1eb96d data-v-7f1eb96d>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-7f1eb96d data-v-7f1eb96d>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0 data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_27_129 data-v-7f1eb96d data-v-7f1eb96d>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_27_129 resultshape data-v-7f1eb96d data-v-7f1eb96d>/feBlend>/filter>linearGradient idpaint0_linear_27_129 x14 y118 x218.8235 y218 gradientUnitsuserSpaceOnUse data-v-7f1eb96d data-v-7f1eb96d>stop stop-color#ECDBBA stop-opacity0.49 data-v-7f1eb96d data-v-7f1eb96d>/stop>stop offset1 stop-color#ECDBBA data-v-7f1eb96d data-v-7f1eb96d>/stop>/linearGradient>/defs>/svg> span data-v-7f1eb96d>Contact me/span>/div> div classdivider data-v-7f1eb96d>/div> div classcontent-col data-v-7f1eb96d>div classcontent data-v-7f1eb96d>div classcontent data-v-7f1eb96d data-v-0cc71886>p data-v-7f1eb96d data-v-0cc71886> If you’d like to span classblue data-v-7f1eb96d data-v-0cc71886>get in touch/span>, feel free to write me at: /p> a href/cdn-cgi/l/email-protection#bddbd8d9d8cfd4ded2c9d8cfc7d4848bfddad0dcd4d193ded2d0 classblue email data-v-7f1eb96d data-v-0cc71886>span class__cf_email__ data-cfemail51373435342338323e2534232b38686711363c30383d7f323e3c>email protected/span>/a> p data-v-7f1eb96d data-v-0cc71886> You can also find me on various socials, feel free to get it touch there too! /p> div classsocials data-v-7f1eb96d data-v-0cc71886>div classsocial data-v-7f1eb96d data-v-0cc71886>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg data-v-7f1eb96d data-v-0cc71886>path dM23 3.00005C22.0424 3.67552 20.9821 4.19216 19.86 4.53005C19.2577 3.83756 18.4573 3.34674 17.567 3.12397C16.6767 2.90121 15.7395 2.95724 14.8821 3.2845C14.0247 3.61176 13.2884 4.19445 12.773 4.95376C12.2575 5.71308 11.9877 6.61238 12 7.53005V8.53005C10.2426 8.57561 8.50127 8.18586 6.93101 7.39549C5.36074 6.60513 4.01032 5.43868 3 4.00005C3 4.00005 -1 13 8 17C5.94053 18.398 3.48716 19.099 1 19C10 24 21 19 21 7.50005C20.9991 7.2215 20.9723 6.94364 20.92 6.67005C21.9406 5.66354 22.6608 4.39276 23 3.00005V3.00005Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>/svg>a target_blank hrefhttps://twitter.com/terzi_federico data-v-7f1eb96d data-v-0cc71886>Twitter/a>/div> div classsocial data-v-7f1eb96d data-v-0cc71886>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg data-v-7f1eb96d data-v-0cc71886>g clip-pathurl(#clip0_31_53) data-v-7f1eb96d data-v-0cc71886>path dM16 21.9999V18.1299C16.0375 17.6531 15.9731 17.1737 15.811 16.7237C15.6489 16.2737 15.3929 15.8634 15.06 15.5199C18.2 15.1699 21.5 13.9799 21.5 8.51994C21.4997 7.12376 20.9627 5.78114 20 4.76994C20.4559 3.54844 20.4236 2.19829 19.91 0.999938C19.91 0.999938 18.73 0.649938 16 2.47994C13.708 1.85876 11.292 1.85876 9 2.47994C6.27 0.649938 5.09 0.999938 5.09 0.999938C4.57638 2.19829 4.54414 3.54844 5 4.76994C4.03013 5.78864 3.49252 7.1434 3.5 8.54994C3.5 13.9699 6.8 15.1599 9.94 15.5499C9.611 15.8899 9.35726 16.2953 9.19531 16.7399C9.03335 17.1844 8.96681 17.658 9 18.1299V21.9999M9 18.9999C4 20.4999 4 16.4999 2 15.9999L9 18.9999Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>/g>defs data-v-7f1eb96d data-v-0cc71886>clipPath idclip0_31_53 data-v-7f1eb96d data-v-0cc71886>rect width24 height24 fillwhite data-v-7f1eb96d data-v-0cc71886>/rect>/clipPath>/defs>/svg>a target_blank hrefhttps://github.com/federico-terzi/ data-v-7f1eb96d data-v-0cc71886>GitHub/a>/div>/div> div classsocials data-v-7f1eb96d data-v-0cc71886>div classsocial data-v-7f1eb96d data-v-0cc71886>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg data-v-7f1eb96d data-v-0cc71886>path dM16 8C17.5913 8 19.1174 8.63214 20.2426 9.75736C21.3679 10.8826 22 12.4087 22 14V21H18V14C18 13.4696 17.7893 12.9609 17.4142 12.5858C17.0391 12.2107 16.5304 12 16 12C15.4696 12 14.9609 12.2107 14.5858 12.5858C14.2107 12.9609 14 13.4696 14 14V21H10V14C10 12.4087 10.6321 10.8826 11.7574 9.75736C12.8826 8.63214 14.4087 8 16 8V8Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>path dM6 9H2V21H6V9Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>path dM4 6C5.10457 6 6 5.10457 6 4C6 2.89543 5.10457 2 4 2C2.89543 2 2 2.89543 2 4C2 5.10457 2.89543 6 4 6Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>/svg>a target_blank hrefhttps://www.linkedin.com/in/federico-terzi/ data-v-7f1eb96d data-v-0cc71886>Linkedin/a>/div> div classsocial data-v-7f1eb96d data-v-0cc71886>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg data-v-7f1eb96d data-v-0cc71886>path dM22.54 6.42C22.4212 5.94541 22.1793 5.51057 21.8387 5.15941C21.498 4.80824 21.0708 4.55318 20.6 4.42C18.88 4 12 4 12 4C12 4 5.12001 4 3.40001 4.46C2.92925 4.59318 2.50198 4.84824 2.16135 5.19941C1.82072 5.55057 1.5788 5.98541 1.46001 6.46C1.14522 8.20556 0.991243 9.97631 1.00001 11.75C0.988786 13.537 1.14277 15.3213 1.46001 17.08C1.59097 17.5398 1.83831 17.9581 2.17815 18.2945C2.51799 18.6308 2.93883 18.8738 3.40001 19C5.12001 19.46 12 19.46 12 19.46C12 19.46 18.88 19.46 20.6 19C21.0708 18.8668 21.498 18.6118 21.8387 18.2606C22.1793 17.9094 22.4212 17.4746 22.54 17C22.8524 15.2676 23.0063 13.5103 23 11.75C23.0112 9.96295 22.8572 8.1787 22.54 6.42V6.42Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>path dM9.75 15.02L15.5 11.75L9.75 8.47998V15.02Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>/svg>a target_blank hrefhttps://www.youtube.com/c/FedericoTerzi data-v-7f1eb96d data-v-0cc71886>YouTube/a>/div>/div>/div>/div>/div>/div>/div>/div> div classfooter-container data-v-d5d2bd86>p data-v-d5d2bd86>span classbold data-v-d5d2bd86>Designed/span> and span classbold data-v-d5d2bd86>coded/span> withspan classred data-v-d5d2bd86> ♥/span> by me. Copyright © Federico Terzi 2019-2024 - P.IVA 03864201201 /p>/div> div classsocial-bar-container>a hrefhttps://twitter.com/terzi_federico>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg>path dM23 3.00005C22.0424 3.67552 20.9821 4.19216 19.86 4.53005C19.2577 3.83756 18.4573 3.34674 17.567 3.12397C16.6767 2.90121 15.7395 2.95724 14.8821 3.2845C14.0247 3.61176 13.2884 4.19445 12.773 4.95376C12.2575 5.71308 11.9877 6.61238 12 7.53005V8.53005C10.2426 8.57561 8.50127 8.18586 6.93101 7.39549C5.36074 6.60513 4.01032 5.43868 3 4.00005C3 4.00005 -1 13 8 17C5.94053 18.398 3.48716 19.099 1 19C10 24 21 19 21 7.50005C20.9991 7.2215 20.9723 6.94364 20.92 6.67005C21.9406 5.66354 22.6608 4.39276 23 3.00005V3.00005Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>/svg>/a> div classsocial-bar-divider>/div> a hrefhttps://github.com/federico-terzi/>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg>g clip-pathurl(#clip0_31_53)>path dM16 21.9999V18.1299C16.0375 17.6531 15.9731 17.1737 15.811 16.7237C15.6489 16.2737 15.3929 15.8634 15.06 15.5199C18.2 15.1699 21.5 13.9799 21.5 8.51994C21.4997 7.12376 20.9627 5.78114 20 4.76994C20.4559 3.54844 20.4236 2.19829 19.91 0.999938C19.91 0.999938 18.73 0.649938 16 2.47994C13.708 1.85876 11.292 1.85876 9 2.47994C6.27 0.649938 5.09 0.999938 5.09 0.999938C4.57638 2.19829 4.54414 3.54844 5 4.76994C4.03013 5.78864 3.49252 7.1434 3.5 8.54994C3.5 13.9699 6.8 15.1599 9.94 15.5499C9.611 15.8899 9.35726 16.2953 9.19531 16.7399C9.03335 17.1844 8.96681 17.658 9 18.1299V21.9999M9 18.9999C4 20.4999 4 16.4999 2 15.9999L9 18.9999Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>/g>defs>clipPath idclip0_31_53>rect width24 height24 fillwhite>/rect>/clipPath>/defs>/svg>/a> div classsocial-bar-divider>/div> a hrefhttps://www.linkedin.com/in/federico-terzi/>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg>path dM16 8C17.5913 8 19.1174 8.63214 20.2426 9.75736C21.3679 10.8826 22 12.4087 22 14V21H18V14C18 13.4696 17.7893 12.9609 17.4142 12.5858C17.0391 12.2107 16.5304 12 16 12C15.4696 12 14.9609 12.2107 14.5858 12.5858C14.2107 12.9609 14 13.4696 14 14V21H10V14C10 12.4087 10.6321 10.8826 11.7574 9.75736C12.8826 8.63214 14.4087 8 16 8V8Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>path dM6 9H2V21H6V9Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>path dM4 6C5.10457 6 6 5.10457 6 4C6 2.89543 5.10457 2 4 2C2.89543 2 2 2.89543 2 4C2 5.10457 2.89543 6 4 6Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>/svg>/a> div classsocial-bar-divider>/div> a hrefhttps://www.youtube.com/c/FedericoTerzi>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg>path dM22.54 6.42C22.4212 5.94541 22.1793 5.51057 21.8387 5.15941C21.498 4.80824 21.0708 4.55318 20.6 4.42C18.88 4 12 4 12 4C12 4 5.12001 4 3.40001 4.46C2.92925 4.59318 2.50198 4.84824 2.16135 5.19941C1.82072 5.55057 1.5788 5.98541 1.46001 6.46C1.14522 8.20556 0.991243 9.97631 1.00001 11.75C0.988786 13.537 1.14277 15.3213 1.46001 17.08C1.59097 17.5398 1.83831 17.9581 2.17815 18.2945C2.51799 18.6308 2.93883 18.8738 3.40001 19C5.12001 19.46 12 19.46 12 19.46C12 19.46 18.88 19.46 20.6 19C21.0708 18.8668 21.498 18.6118 21.8387 18.2606C22.1793 17.9094 22.4212 17.4746 22.54 17C22.8524 15.2676 23.0063 13.5103 23 11.75C23.0112 9.96295 22.8572 8.1787 22.54 6.42V6.42Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>path dM9.75 15.02L15.5 11.75L9.75 8.47998V15.02Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>/svg>/a>/div>/div>/div>/div>script data-cfasyncfalse src/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js>/script>script defer src/_nuxt/static/1767518764/state.js>/script>script src/_nuxt/7800ae4.js defer>/script>script src/_nuxt/ebbc7b7.js defer>/script>script src/_nuxt/17ba505.js defer>/script>script src/_nuxt/4293a24.js defer>/script>script src/_nuxt/cd10c32.js defer>/script> /body>/html>
Port 443
HTTP/1.1 200 OKDate: Wed, 18 Feb 2026 19:02:48 GMTContent-Type: text/html; charsetutf-8Transfer-Encoding: chunkedConnection: keep-aliveServer: cloudflarelast-modified: Sun, 04 Jan 2026 09:26:29 GMTvary: Accept-Encodingaccess-control-allow-origin: *Nel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}expires: Wed, 18 Feb 2026 19:12:48 GMTCache-Control: max-age600Report-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sXtdlJDPmtcbbNIfgPVB1uFHz0ntchN%2BbdkIyxAuA%2FncZFkgTM6UMJmuyTfMKG88uoC1WdfDJbTkVY419D7eq1oPWYZOa%2Fs%2BeuKEptIxtcw%3D%3D}}x-proxy-cache: MISSx-github-request-id: 3552:248651:1368FB0:14A84A8:69960CD8cf-cache-status: DYNAMICCF-RAY: 9cffc7e7cbb2ca84-PDXalt-svc: h3:443; ma86400 !doctype html>!-- Hi there! Welcome to my website :) It seems you are interested in the source code, did you know that the website is open-source? See: https://github.com/federico-terzi/federico-terzi.github.io-->html data-n-head-ssr langen data-n-head%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D> head> title>Federico Terzi - A Software Engineering Journey/title>meta data-n-headssr charsetutf-8>meta data-n-headssr nameviewport contentwidthdevice-width,initial-scale1>meta data-n-headssr data-hidtitle nametitle contentFederico Terzi - A Software Engineering Journey>meta data-n-headssr data-hiddescription namedescription contentA Developer who loves building great products. Learn more about my journey as a software engineer, youll find technical articles, side-projects and much more!>meta data-n-headssr data-hidog:description nameog:description contentA Developer who loves building great products. Learn more about my journey as a software engineer, youll find technical articles, side-projects and much more!>meta data-n-headssr nameformat-detection contenttelephoneno>link data-n-headssr relstylesheet href/colors.css>link data-n-headssr relicon typeimage/x-icon href/favicon.ico>link data-n-headssr relicon typeimage/png href/favicon-32x32.png sizes32x32>link data-n-headssr relicon typeimage/png href/favicon-16x16.png sizes16x16>link data-n-headssr relmanifest href/site.webmanifest>link data-n-headssr relapple-touch-icon href/apple-touch-icon.png sizes180x180>link data-n-headssr relmask-icon href/safari-pinned-tab.svg color#5bbad5>link relpreload href/_nuxt/7800ae4.js asscript>link relpreload href/_nuxt/17ba505.js asscript>link relpreload href/_nuxt/4293a24.js asscript>link relpreload href/_nuxt/cd10c32.js asscript>link relpreload href/_nuxt/ebbc7b7.js asscript>style data-vue-ssr-idc3ae2b30:0 d75bdb94:0 fa7ff0ca:0 56b15182:0 7ab12987:0 68efd426:0 4c3275e1:0 af713024:0 ed7b8670:0 2f5d4658:0 18ecfca6:0 7c800bb4:0 ab0260f6:0 2ac5434c:0 b9a38c30:0 313ddf21:0 1b911c9d:0 fcd9470c:0 71a90360:0>@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_nuxt/fonts/inter-v7-latin-regular.33e43c3.eot);src:local(),url(/_nuxt/fonts/inter-v7-latin-regular.33e43c3.eot?#iefix) format(embedded-opentype),url(/_nuxt/fonts/inter-v7-latin-regular.5e6a773.woff2) format(woff2),url(/_nuxt/fonts/inter-v7-latin-regular.cefb4aa.woff) format(woff),url(/_nuxt/fonts/inter-v7-latin-regular.0e67589.ttf) format(truetype),url(/_nuxt/b8db5cf5416facf0c5ec4489d0ee9bbe.svg#Inter) format(svg)}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/_nuxt/fonts/inter-v7-latin-700.129e115.eot);src:local(),url(/_nuxt/fonts/inter-v7-latin-700.129e115.eot?#iefix) format(embedded-opentype),url(/_nuxt/fonts/inter-v7-latin-700.c2ceaa0.woff2) format(woff2),url(/_nuxt/fonts/inter-v7-latin-700.7f5a89b.woff) format(woff),url(/_nuxt/fonts/inter-v7-latin-700.6bb53f6.ttf) format(truetype),url(/_nuxt/0a85e1f2fd11f8afbfa155c7c5ec0a12.svg#Inter) format(svg)}@font-face{font-family:PT Serif;font-style:normal;font-weight:400;font-display:swap;src:url(/_nuxt/fonts/pt-serif-v16-latin-regular.ef9b698.eot);src:local(),url(/_nuxt/fonts/pt-serif-v16-latin-regular.ef9b698.eot?#iefix) format(embedded-opentype),url(/_nuxt/fonts/pt-serif-v16-latin-regular.511cda7.woff2) format(woff2),url(/_nuxt/fonts/pt-serif-v16-latin-regular.b4f2a8d.woff) format(woff),url(/_nuxt/fonts/pt-serif-v16-latin-regular.1602721.ttf) format(truetype),url(/_nuxt/2b24347634a541da72419674a1818855.svg#PTSerif) format(svg)}html{--content-primary:#1a1a1a;--content-primary-inverted:#fff;--accent-primary:#c84c32;--accent-secondary:#2e4364;--accent-tertiary:#ecdbba;--accent-menu:#2e4364;--background-primary:#fff;--background-elevated:#f1f1f1;--background-semitransparent:hsla(0,0%,100%,0.7);--details:rgba(26,26,26,0.1)}htmldata-themedark{--content-primary:#fff;--content-primary-inverted:#1a1a1a;--accent-primary:#ef6b50;--accent-secondary:#8bb8ff;--accent-tertiary:#ecdbba;--accent-menu:#fff;--background-primary:#000;--background-elevated:#343434;--background-semitransparent:rgba(0,0,0,0.7);--details:hsla(0,0%,100%,0.1)}.nuxt-progress{position:fixed;top:0;left:0;right:0;height:2px;width:0;opacity:1;transition:width .1s,opacity .4s;background-color:#000;z-index:999999}.nuxt-progress.nuxt-progress-notransition{transition:none}.nuxt-progress-failed{background-color:red}body,html{font-family:Inter,sans-serif;color:var(--content-primary);background-color:transparent;margin:0;padding:0}*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.main-layout-container{max-width:1512px;margin:auto}.main-layout-content{padding-top:95px;min-height:100vh}@media (max-width:992px){.main-layout-content{padding-top:50px;max-width:100vw;overflow-x:hidden}}.containerdata-v-71b3c000{position:fixed;top:0;left:0;right:0;bottom:0;width:100%;height:100%;overflow:hidden;z-index:-10;background-color:var(--background-primary);transition:all .5s ease}.blurreddata-v-71b3c000{filter:blur(50px);height:450px;width:450px}.animatedata-v-71b3c000{-webkit-animation:rotate-center-data-v-71b3c000 120s linear infinite both;animation:rotate-center-data-v-71b3c000 120s linear infinite both}.reddata-v-71b3c000{top:25vh;left:-10vw;background-color:var(--accent-primary)}.bluedata-v-71b3c000,.reddata-v-71b3c000{position:absolute;opacity:.15}.bluedata-v-71b3c000{top:0;right:-10vw;background-color:var(--accent-secondary)}.yellowdata-v-71b3c000{position:absolute;top:75vh;left:40vw;background-color:var(--accent-tertiary);opacity:.4}htmldata-themedark .yellowdata-v-71b3c000{opacity:.2}@media (max-width:992px){.blurreddata-v-71b3c000{height:300px;width:300px}}@-webkit-keyframes rotate-center-data-v-71b3c000{0%{transform:rotate(0) translateX(0) translateY(0)}50%{transform:rotate(180deg) translateX(300px) translateY(300px)}to{transform:rotate(1turn) translateX(0) translateY(0)}}@keyframes rotate-center-data-v-71b3c000{0%{transform:rotate(0) translateX(0) translateY(0)}50%{transform:rotate(180deg) translateX(300px) translateY(300px)}to{transform:rotate(1turn) translateX(0) translateY(0)}}.headerdata-v-47a7b6cf{position:fixed;top:0;right:0;left:0;z-index:20;background-color:transparent;box-shadow:none;transition:all .2s ease-in-out}html:not(data-scroll0) .headerdata-v-47a7b6cf{background-color:var(--background-primary);box-shadow:0 4px 43px rgba(0,0,0,.1)}.contentdata-v-47a7b6cf{display:flex;align-items:center;justify-content:space-between;padding:25px;max-width:1512px;margin:auto}.logo-linkdata-v-47a7b6cf{text-decoration:none}.detailsdata-v-47a7b6cf{display:flex}.logodata-v-47a7b6cf{margin-right:16px}.details-textdata-v-47a7b6cf{display:flex;flex-direction:column;justify-content:center}.namedata-v-47a7b6cf{font-size:24px;line-height:28px;color:var(--accent-primary)}.namedata-v-47a7b6cf,.taglinedata-v-47a7b6cf{font-weight:700;text-shadow:0 4px 4px rgba(0,0,0,.05)}.taglinedata-v-47a7b6cf{font-size:14px;line-height:17px;opacity:.8;color:var(--content-primary)}htmldata-themedark .taglinedata-v-47a7b6cf{opacity:.9}.menu-linkdata-v-47a7b6cf{position:relative;font-style:normal;font-weight:700;font-size:18px;line-height:22px;color:var(--accent-menu);margin-left:48px;text-decoration:none;transition:all .3s ease}.menu-linkdata-v-47a7b6cf:hover{color:var(--accent-primary)}.menu-linkdata-v-47a7b6cf:after{content:;position:absolute;display:block;width:100%;height:2px;bottom:-3px;left:0;background-color:var(--accent-secondary);transform:scaleX(0);opacity:0;transition:all .3s ease}.menu-linkdata-v-47a7b6cf:hover:after{transform:scaleX(1);opacity:1;background-color:var(--accent-primary)}.open-mobile-menudata-v-47a7b6cf{display:none}.mobile-menudata-v-47a7b6cf{position:fixed;top:0;left:0;right:0;bottom:0;background-color:var(--background-semitransparent);z-index:1000;box-shadow:0 3px 18px rgba(0,0,0,.1);display:flex;flex-direction:column;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);perspective:1000px}.menu-dividerdata-v-47a7b6cf{opacity:.05;border-bottom:2px solid #2e4364;margin-right:32px;margin-left:32px}.fade-enter-activedata-v-47a7b6cf,.fade-leave-activedata-v-47a7b6cf{transition:opacity .5s}.fade-enterdata-v-47a7b6cf,.fade-leave-todata-v-47a7b6cf{opacity:0;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}@media (max-width:992px){.namedata-v-47a7b6cf{font-size:14px;line-height:17px}.taglinedata-v-47a7b6cf{display:none}.details-textdata-v-47a7b6cf{opacity:0;transition:opacity .2s ease-in-out}html:not(data-scroll0) .details-textdata-v-47a7b6cf{opacity:1}.contentdata-v-47a7b6cf{padding:14px}.extended-menudata-v-47a7b6cf{display:none}.open-mobile-menudata-v-47a7b6cf{display:block;margin-right:4px;filter:drop-shadow(0 4px 16px rgba(0,0,0,.25))}.menu-linkdata-v-47a7b6cf{text-align:center;margin-left:0;margin-top:18px;margin-bottom:18px;-webkit-animation:slide-in-bck-center-data-v-47a7b6cf .7s cubic-bezier(.25,.46,.45,.94) both;animation:slide-in-bck-center-data-v-47a7b6cf .7s cubic-bezier(.25,.46,.45,.94) both}.mobile-menu-linksdata-v-47a7b6cf{display:flex;flex-direction:column;justify-content:center;flex:1}.mobile-menu-labeldata-v-47a7b6cf{text-align:center;font-size:12px;margin-bottom:100px}}@-webkit-keyframes slide-in-bck-center-data-v-47a7b6cf{0%{transform:translateZ(600px);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes slide-in-bck-center-data-v-47a7b6cf{0%{transform:translateZ(600px);opacity:0}to{transform:translateZ(0);opacity:1}}.containerdata-v-66baf38d{position:relative;width:46px;height:46px}.fdata-v-66baf38d,.tdata-v-66baf38d{position:absolute}.tdata-v-66baf38d{left:-3px;top:-1px}@media (max-width:992px){.containerdata-v-66baf38d,.fdata-v-66baf38d,.tdata-v-66baf38d{height:32px;width:32px}.tdata-v-66baf38d{left:-1px;top:0}}.jumbodata-v-26577059{display:flex;height:75vh;padding-top:95px;margin-top:-95px}.scroll-indicatordata-v-26577059{height:15vh}.home-dividerdata-v-26577059{opacity:.05;margin-top:160px;margin-bottom:160px}a.anchordata-v-26577059{display:block;position:relative;top:-120px;visibility:hidden}@media (max-width:992px){.jumbodata-v-26577059{flex-direction:column-reverse;justify-content:start;align-items:stretch;height:70vh}.jumbo-tag-linedata-v-26577059{margin-top:20px}.scroll-indicatordata-v-26577059{height:20vh}.home-dividerdata-v-26577059{border:1px solid #1a1a1a;margin:24px}}.jumbo-tag-containerdata-v-1bdd5506{display:flex;flex:1.5;align-items:center;justify-content:center;font-weight:700;font-size:48px;line-height:58px}.contentdata-v-1bdd5506{max-width:580px;text-shadow:0 4px 4px rgba(0,0,0,.05);padding-left:30px}.hi-and-namedata-v-1bdd5506{display:flex}.handdata-v-1bdd5506{height:48px;width:48px;-webkit-animation-name:wave-animation-data-v-1bdd5506;animation-name:wave-animation-data-v-1bdd5506;-webkit-animation-duration:2.5s;animation-duration:2.5s;-webkit-animation-delay:1s;animation-delay:1s;transform-origin:70% 70%;display:inline-block}.hi-containerdata-v-1bdd5506{-webkit-animation:hi-offset-data-v-1bdd5506 4s cubic-bezier(.23,1,.32,1) both;animation:hi-offset-data-v-1bdd5506 4s cubic-bezier(.23,1,.32,1) both}.namedata-v-1bdd5506{color:var(--accent-primary)}.name-containerdata-v-1bdd5506{-webkit-animation:slide-in-blurred-right-data-v-1bdd5506 1s cubic-bezier(.23,1,.32,1) both;animation:slide-in-blurred-right-data-v-1bdd5506 1s cubic-bezier(.23,1,.32,1) both;-webkit-animation-delay:2.5s;animation-delay:2.5s}.descriptiondata-v-1bdd5506{-webkit-animation:slide-in-blurred-bottom-data-v-1bdd5506 1.5s cubic-bezier(.23,1,.32,1) both;animation:slide-in-blurred-bottom-data-v-1bdd5506 1.5s cubic-bezier(.23,1,.32,1) both;-webkit-animation-delay:3.5s;animation-delay:3.5s}.secondary-highlightdata-v-1bdd5506{color:var(--accent-secondary);-webkit-text-decoration-line:underline;text-decoration-line:underline}@media (max-width:992px){.jumbo-tag-containerdata-v-1bdd5506{font-size:28px;line-height:34px;flex:1;align-items:flex-start}.contentdata-v-1bdd5506{text-align:center;padding-left:0}.handdata-v-1bdd5506{height:28px;width:28px}.hi-and-namedata-v-1bdd5506{justify-content:center}}@-webkit-keyframes wave-animation-data-v-1bdd5506{0%{transform:rotate(0)}10%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}30%{transform:rotate(14deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}60%{transform:rotate(0)}to{transform:rotate(0)}}@keyframes wave-animation-data-v-1bdd5506{0%{transform:rotate(0)}10%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}30%{transform:rotate(14deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}60%{transform:rotate(0)}to{transform:rotate(0)}}@-webkit-keyframes slide-in-blurred-right-data-v-1bdd5506{0%{transform:translateX(100px) scaleX(1.5) scaleY(.2);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0) scaleY(1) scaleX(1);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slide-in-blurred-right-data-v-1bdd5506{0%{transform:translateX(100px) scaleX(1.5) scaleY(.2);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0) scaleY(1) scaleX(1);transform-origin:50% 50%;filter:blur(0);opacity:1}}@-webkit-keyframes slide-in-blurred-bottom-data-v-1bdd5506{0%{transform:translateY(100px) scaleY(1.5);transform-origin:50% 100%;filter:blur(40px);opacity:0}to{transform:translateY(0) scaleY(1);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slide-in-blurred-bottom-data-v-1bdd5506{0%{transform:translateY(100px) scaleY(1.5);transform-origin:50% 100%;filter:blur(40px);opacity:0}to{transform:translateY(0) scaleY(1);transform-origin:50% 50%;filter:blur(0);opacity:1}}@-webkit-keyframes hi-offset-data-v-1bdd5506{0%{transform:translateX(25vw) translateY(40px) scale(2);transform-origin:50% 100%;filter:blur(40px);opacity:0}50%{transform:translateX(25vw) translateY(40px) scale(2);filter:blur(0);opacity:1}to{transform:translateX(0) translateY(0) scale(1)}}@keyframes hi-offset-data-v-1bdd5506{0%{transform:translateX(25vw) translateY(40px) scale(2);transform-origin:50% 100%;filter:blur(40px);opacity:0}50%{transform:translateX(25vw) translateY(40px) scale(2);filter:blur(0);opacity:1}to{transform:translateX(0) translateY(0) scale(1)}}.containerdata-v-67e39d8e{display:flex;align-items:center;justify-content:center;flex:1;z-index:2}.jumbo-imagedata-v-67e39d8e{width:530px;height:580px;background-position:50%;background-size:contain;background-repeat:no-repeat;background-image:url(/_nuxt/img/jumbo-image-light.e7533b5.png);-webkit-animation:fade-in-data-v-67e39d8e 1.2s cubic-bezier(.39,.575,.565,1) both;animation:fade-in-data-v-67e39d8e 1.2s cubic-bezier(.39,.575,.565,1) both;-webkit-animation-delay:2s;animation-delay:2s;cursor:pointer}htmldata-themedark .jumbo-imagedata-v-67e39d8e{background-image:url(/_nuxt/img/jumbo-image-dark.117a55b.png)}@media (max-width:992px){.containerdata-v-67e39d8e{flex:1.5}.jumbo-imagedata-v-67e39d8e{width:55vw;height:40vh}}@-webkit-keyframes fade-in-data-v-67e39d8e{0%{opacity:0}to{opacity:1}}@keyframes fade-in-data-v-67e39d8e{0%{opacity:0}to{opacity:1}}.containerdata-v-0cd7e026{display:flex;flex-direction:column;align-items:center;-webkit-animation:fade-in-data-v-0cd7e026 1.2s cubic-bezier(.39,.575,.565,1) both;animation:fade-in-data-v-0cd7e026 1.2s cubic-bezier(.39,.575,.565,1) both;-webkit-animation-delay:5s;animation-delay:5s;cursor:pointer}.labeldata-v-0cd7e026{font-size:14px;line-height:17px;font-weight:700;text-align:center;color:var(--accent-menu);margin-bottom:12px;-webkit-animation:slide-bottom-data-v-0cd7e026 2s infinite both;animation:slide-bottom-data-v-0cd7e026 2s infinite both;-webkit-animation-delay:.2s;animation-delay:.2s}.arrowsdata-v-0cd7e026{position:relative;width:30px}.arrowdata-v-0cd7e026{position:absolute;-webkit-animation:slide-bottom-data-v-0cd7e026 2s infinite both;animation:slide-bottom-data-v-0cd7e026 2s infinite both}.yellowdata-v-0cd7e026{top:0;left:-2px}.reddata-v-0cd7e026{top:5px;-webkit-animation-delay:.2s;animation-delay:.2s}@-webkit-keyframes slide-bottom-data-v-0cd7e026{0%{transform:translateY(0)}70%{transform:translateY(10px)}to{transform:translateY(0)}}@keyframes slide-bottom-data-v-0cd7e026{0%{transform:translateY(0)}70%{transform:translateY(10px)}to{transform:translateY(0)}}@-webkit-keyframes fade-in-data-v-0cd7e026{0%{opacity:0}to{opacity:1}}@keyframes fade-in-data-v-0cd7e026{0%{opacity:0}to{opacity:1}}.contentdata-v-2d824b8a{font-size:18px;line-height:22px}.content>pdata-v-2d824b8a:first-child{margin-top:0}.reddata-v-2d824b8a{color:var(--accent-primary)}.bluedata-v-2d824b8a,.reddata-v-2d824b8a{font-weight:700}.bluedata-v-2d824b8a{color:var(--accent-secondary)}.no-underlinedata-v-2d824b8a{text-decoration:none}adata-v-2d824b8a{text-underline-offset:2px;text-decoration-thickness:2px}.containerdata-v-7f1eb96d{display:flex;align-items:stretch;padding:28px}.title-coldata-v-7f1eb96d{display:flex;flex:1;justify-content:flex-end;font-style:normal;font-weight:700;font-size:28px;line-height:34px;color:var(--accent-menu);opacity:.01}.title-arrowdata-v-7f1eb96d{margin-right:8px}.content-coldata-v-7f1eb96d{opacity:.01;flex:1.5}.animate-leftdata-v-7f1eb96d{-webkit-animation:slide-in-blurred-left-data-v-7f1eb96d 1.5s cubic-bezier(.23,1,.32,1) both;animation:slide-in-blurred-left-data-v-7f1eb96d 1.5s cubic-bezier(.23,1,.32,1) both}.animate-rightdata-v-7f1eb96d{-webkit-animation:slide-in-blurred-right-data-v-7f1eb96d 1.5s cubic-bezier(.23,1,.32,1) both;animation:slide-in-blurred-right-data-v-7f1eb96d 1.5s cubic-bezier(.23,1,.32,1) both}.contentdata-v-7f1eb96d{max-width:450px}.dividerdata-v-7f1eb96d{opacity:.1;border:1px solid #1a1a1a;margin-right:48px;margin-left:48px}@media (max-width:992px){.containerdata-v-7f1eb96d{flex-direction:column}.title-coldata-v-7f1eb96d{justify-content:flex-start;margin-left:-8px;margin-bottom:24px}.dividerdata-v-7f1eb96d{display:none}}@-webkit-keyframes slide-in-blurred-right-data-v-7f1eb96d{0%{transform:translateX(200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slide-in-blurred-right-data-v-7f1eb96d{0%{transform:translateX(200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}@-webkit-keyframes slide-in-blurred-left-data-v-7f1eb96d{0%{transform:translateX(-200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slide-in-blurred-left-data-v-7f1eb96d{0%{transform:translateX(-200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}.contentdata-v-77ede1ec{display:flex}.dividerdata-v-77ede1ec{opacity:.1;border:1px solid #1a1a1a;margin-right:36px;margin-left:36px}.view-all-linkdata-v-77ede1ec{text-align:center;width:100%;font-weight:700;color:var(--accent-menu);text-underline-offset:2px;text-decoration-thickness:2px;margin-top:48px}.post-linkdata-v-77ede1ec{text-decoration:none;color:var(--content-primary);flex:1}@media (max-width:992px){.contentdata-v-77ede1ec{flex-direction:column}.dividerdata-v-77ede1ec{margin:24px 0}}.regular-section-containerdata-v-2b471269{display:flex;flex-direction:column;align-items:stretch;padding:28px}.title-containerdata-v-2b471269{display:flex;justify-content:center;font-style:normal;font-weight:700;font-size:28px;line-height:34px;color:var(--accent-menu);opacity:.01}.title-arrowdata-v-2b471269{margin-right:8px}.content-containerdata-v-2b471269{opacity:.01;margin-top:62px}.section-contentdata-v-2b471269{display:flex;flex-direction:column;max-width:1000px;margin:auto}.animate-leftdata-v-2b471269{-webkit-animation:slide-in-blurred-left-data-v-2b471269 1.5s cubic-bezier(.23,1,.32,1) both;animation:slide-in-blurred-left-data-v-2b471269 1.5s cubic-bezier(.23,1,.32,1) both}.animate-rightdata-v-2b471269{-webkit-animation:slide-in-blurred-right-data-v-2b471269 1.5s cubic-bezier(.23,1,.32,1) both;animation:slide-in-blurred-right-data-v-2b471269 1.5s cubic-bezier(.23,1,.32,1) both}@media (max-width:992px){.containerdata-v-2b471269{flex-direction:column}.title-containerdata-v-2b471269{justify-content:flex-start;margin-left:-8px;margin-bottom:24px}.content-containerdata-v-2b471269{margin-top:12px}}@-webkit-keyframes slide-in-blurred-right-data-v-2b471269{0%{transform:translateX(200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slide-in-blurred-right-data-v-2b471269{0%{transform:translateX(200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}@-webkit-keyframes slide-in-blurred-left-data-v-2b471269{0%{transform:translateX(-200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slide-in-blurred-left-data-v-2b471269{0%{transform:translateX(-200px);transform-origin:0 50%;filter:blur(40px);opacity:0}to{transform:translateX(0);transform-origin:50% 50%;filter:blur(0);opacity:1}}.contentdata-v-173c18e8{display:flex;padding:0;flex-direction:column}.datedata-v-173c18e8{font-size:12px;line-height:15px}.titledata-v-173c18e8{font-weight:700;font-size:18px;margin-bottom:0;margin-top:8px}.snippetdata-v-173c18e8,.titledata-v-173c18e8{line-height:22px}.snippetdata-v-173c18e8{font-size:15px;font-family:PT Serif}.contentdata-v-0cc71886{font-size:18px;line-height:22px}.content>pdata-v-0cc71886:first-child{margin-top:0}.emaildata-v-0cc71886{display:block;padding:16px;text-align:center}.bluedata-v-0cc71886{font-weight:700;color:var(--accent-secondary)}adata-v-0cc71886{text-underline-offset:2px;text-decoration-thickness:2px}.socialdata-v-0cc71886{display:flex;flex:1;justify-content:center;align-items:center;margin:16px 0}.socialsdata-v-0cc71886{display:flex;width:100%}.socials adata-v-0cc71886{font-weight:700;color:var(--accent-secondary);margin-left:10px}.socials pathdata-v-0cc71886{stroke:var(--accent-secondary)}.footer-containerdata-v-d5d2bd86{font-size:14px;line-height:17px;text-align:center;color:var(--accent-menu);margin-top:40px;padding-right:16px;padding-left:16px}.bolddata-v-d5d2bd86{font-weight:700}.reddata-v-d5d2bd86{color:var(--accent-primary)}.social-bar-container{position:fixed;left:24px;bottom:24px;background:var(--background-elevated);border:1px solid var(--details);box-sizing:border-box;box-shadow:0 3px 8px 2px rgba(0,0,0,.1);border-radius:4px;display:flex;justify-content:space-evenly;width:360px;padding-top:10px;padding-bottom:10px;transition:all .3s ease}htmldata-scrolled-to-bottomtrue .social-bar-container{opacity:0;transform:translateY(100px)}.social-bar-container a{display:flex;align-items:center;filter:drop-shadow(0 4px 6px rgba(0,0,0,.25));transition:all .3s ease}.social-bar-container a:hover{transform:scale(1.2) translateY(-3px)}.social-bar-container a path{stroke:var(--accent-primary)}.social-bar-divider{border-left:1px solid var(--details)}@media (max-width:992px){.social-bar-container{left:0;right:0;bottom:0;width:100%;border-radius:0}}/style>link relpreload href/_nuxt/static/1767518764/state.js asscript>link relpreload href/_nuxt/static/1767518764/payload.js asscript>link relpreload href/_nuxt/static/1767518764/manifest.js asscript> script>const debouncet>{let c;return(...e)>{c&&cancelAnimationFrame(c),crequestAnimationFrame(()>{t(...e)})}},handleScroll()>{document.documentElement.dataset.scrollwindow.scrollY,document.documentElement.dataset.scrolledToBottomwindow.innerHeight+window.scrollY>document.body?.offsetHeight?true:false};function switchTheme(e){darke?document.documentElement.setAttribute(data-theme,dark):document.documentElement.setAttribute(data-theme,light)}document.addEventListener(scroll,debounce(handleScroll),{passive:!0}),handleScroll();const prefersDarkSchemewindow.matchMedia((prefers-color-scheme: dark));prefersDarkScheme.matches&&switchTheme(dark),window.matchMedia((prefers-color-scheme: dark)).addListener(e>e.matches?switchTheme(dark):switchTheme(light))/script> /head> body> div data-server-renderedtrue id__nuxt>!---->div id__layout>div classmain-layout-container>div classcontainer data-v-71b3c000>div classblurred red animate data-v-71b3c000>/div> div classblurred yellow animate data-v-71b3c000>/div> div classblurred blue animate data-v-71b3c000>/div>/div> div idheader classheader data-v-47a7b6cf>div classcontent data-v-47a7b6cf>a href/ aria-currentpage classlogo-link nuxt-link-exact-active nuxt-link-active data-v-47a7b6cf>div classdetails data-v-47a7b6cf>div classcontainer logo data-v-66baf38d data-v-47a7b6cf>svg width51 height47 viewBox0 0 51 47 fillnone xmlnshttp://www.w3.org/2000/svg classf data-v-66baf38d data-v-66baf38d>g filterurl(#filter0_d_15_34) data-v-66baf38d data-v-66baf38d>path dM2.09039 44.1666V2H48L2.09039 44.1666Z fill#C84C32 data-v-66baf38d data-v-66baf38d>/path>/g>defs data-v-66baf38d data-v-66baf38d>filter idfilter0_d_15_34 x0.0543151 y0.506876 width49.9818 height46.2388 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-66baf38d data-v-66baf38d>feFlood flood-opacity0 resultBackgroundImageFix data-v-66baf38d data-v-66baf38d>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-66baf38d data-v-66baf38d>/feColorMatrix>feOffset dy0.542954 data-v-66baf38d data-v-66baf38d>/feOffset>feGaussianBlur stdDeviation1.01804 data-v-66baf38d data-v-66baf38d>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-66baf38d data-v-66baf38d>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0 data-v-66baf38d data-v-66baf38d>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_15_34 data-v-66baf38d data-v-66baf38d>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_15_34 resultshape data-v-66baf38d data-v-66baf38d>/feBlend>/filter>/defs>/svg> svg width53 height49 viewBox0 0 53 49 fillnone xmlnshttp://www.w3.org/2000/svg classt data-v-66baf38d data-v-66baf38d>g filterurl(#filter0_d_15_35) data-v-66baf38d data-v-66baf38d>path dM28.0452 45.0836L5 3H51L28.0452 45.0836Z fillurl(#paint0_linear_15_35) data-v-66baf38d data-v-66baf38d>/path>/g>defs data-v-66baf38d data-v-66baf38d>filter idfilter0_d_15_35 x0.656367 y0.556706 width51.9725 height48.0561 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-66baf38d data-v-66baf38d>feFlood flood-opacity0 resultBackgroundImageFix data-v-66baf38d data-v-66baf38d>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-66baf38d data-v-66baf38d>/feColorMatrix>feOffset dx-1.35739 dy0.542954 data-v-66baf38d data-v-66baf38d>/feOffset>feGaussianBlur stdDeviation1.49312 data-v-66baf38d data-v-66baf38d>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-66baf38d data-v-66baf38d>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0 data-v-66baf38d data-v-66baf38d>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_15_35 data-v-66baf38d data-v-66baf38d>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_15_35 resultshape data-v-66baf38d data-v-66baf38d>/feBlend>/filter>linearGradient idpaint0_linear_15_35 x128 y13 x228 y245.0836 gradientUnitsuserSpaceOnUse data-v-66baf38d data-v-66baf38d>stop stop-color#ECDBBA stop-opacity0.49 data-v-66baf38d data-v-66baf38d>/stop>stop offset1 stop-color#ECDBBA data-v-66baf38d data-v-66baf38d>/stop>/linearGradient>/defs>/svg>/div> div classdetails-text data-v-47a7b6cf>span classname data-v-47a7b6cf>Federico Terzi/span> span classtagline data-v-47a7b6cf>A Software Engineering Journey/span>/div>/div>/a> div classextended-menu data-v-47a7b6cf>a href/#about classmenu-link data-v-47a7b6cf>About/a>a href/projects classmenu-link data-v-47a7b6cf>Projects/a>a href/blog classmenu-link data-v-47a7b6cf>Blog/a>a href/talks classmenu-link data-v-47a7b6cf>Talks/a>a href/contact-me classmenu-link data-v-47a7b6cf>Contact me/a>/div> div classopen-mobile-menu data-v-47a7b6cf>svg width26 height18 viewBox0 0 26 18 fillnone xmlnshttp://www.w3.org/2000/svg classmenu-icon data-v-47a7b6cf data-v-47a7b6cf>path dM2 9.25H23.75 stroke#C84C32 stroke-width3 stroke-linecapround stroke-linejoinround data-v-47a7b6cf data-v-47a7b6cf>/path>path dM2 2H23.75 stroke#C84C32 stroke-width3 stroke-linecapround stroke-linejoinround data-v-47a7b6cf data-v-47a7b6cf>/path>path dM2 16.5H23.75 stroke#C84C32 stroke-width3 stroke-linecapround stroke-linejoinround data-v-47a7b6cf data-v-47a7b6cf>/path>/svg>/div> !---->/div>/div> div classmain-layout-content>div data-v-26577059>div classjumbo data-v-26577059>div classjumbo-tag-container jumbo-tag-line data-v-1bdd5506 data-v-26577059>div classcontent data-v-1bdd5506>div classhi-and-name data-v-1bdd5506>div classhi-container data-v-1bdd5506>span data-v-1bdd5506>Hi /span> img src/_nuxt/img/hand.7edad81.png classhand wave data-v-1bdd5506>/div> div classname-container data-v-1bdd5506>span data-v-1bdd5506>, /span> span data-v-1bdd5506>I’m /span> span classname data-v-1bdd5506>Federico/span> span data-v-1bdd5506>, /span>/div>/div> div classdescription data-v-1bdd5506> a developer who span classsecondary-highlight data-v-1bdd5506>loves/span> building span classsecondary-highlight data-v-1bdd5506>great/span> products. /div>/div>/div> div classcontainer data-v-67e39d8e data-v-26577059>div classjumbo-image data-v-67e39d8e>/div>/div>/div> div classcontainer scroll-indicator data-v-0cd7e026 data-v-26577059>span classlabel data-v-0cd7e026>Scroll to know more/span> div classarrows data-v-0cd7e026>svg width34 height20 viewBox0 0 34 20 fillnone xmlnshttp://www.w3.org/2000/svg classred arrow data-v-0cd7e026 data-v-0cd7e026>g filterurl(#filter0_d_15_70) data-v-0cd7e026 data-v-0cd7e026>path dM17 17.1176L2.11765 2.11765H32L17 17.1176Z fill#C84C32 data-v-0cd7e026 data-v-0cd7e026>/path>/g>defs data-v-0cd7e026 data-v-0cd7e026>filter idfilter0_d_15_70 x0.352941 y0.823528 width33.4118 height18.5294 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-0cd7e026 data-v-0cd7e026>feFlood flood-opacity0 resultBackgroundImageFix data-v-0cd7e026 data-v-0cd7e026>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-0cd7e026 data-v-0cd7e026>/feColorMatrix>feOffset dy0.470588 data-v-0cd7e026 data-v-0cd7e026>/feOffset>feGaussianBlur stdDeviation0.882353 data-v-0cd7e026 data-v-0cd7e026>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-0cd7e026 data-v-0cd7e026>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0 data-v-0cd7e026 data-v-0cd7e026>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_15_70 data-v-0cd7e026 data-v-0cd7e026>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_15_70 resultshape data-v-0cd7e026 data-v-0cd7e026>/feBlend>/filter>/defs>/svg> svg width36 height21 viewBox0 0 36 21 fillnone xmlnshttp://www.w3.org/2000/svg classyellow arrow data-v-0cd7e026 data-v-0cd7e026>g filterurl(#filter0_d_15_71) data-v-0cd7e026 data-v-0cd7e026>path dM19.0295 17.8235L4 3H34L19.0295 17.8235Z fillurl(#paint0_linear_15_71) shape-renderingcrispEdges data-v-0cd7e026 data-v-0cd7e026>/path>/g>defs data-v-0cd7e026 data-v-0cd7e026>filter idfilter0_d_15_71 x0.235294 y0.882353 width35.1765 height20 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-0cd7e026 data-v-0cd7e026>feFlood flood-opacity0 resultBackgroundImageFix data-v-0cd7e026 data-v-0cd7e026>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-0cd7e026 data-v-0cd7e026>/feColorMatrix>feOffset dx-1.17647 dy0.470588 data-v-0cd7e026 data-v-0cd7e026>/feOffset>feGaussianBlur stdDeviation1.29412 data-v-0cd7e026 data-v-0cd7e026>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-0cd7e026 data-v-0cd7e026>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0 data-v-0cd7e026 data-v-0cd7e026>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_15_71 data-v-0cd7e026 data-v-0cd7e026>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_15_71 resultshape data-v-0cd7e026 data-v-0cd7e026>/feBlend>/filter>linearGradient idpaint0_linear_15_71 x119 y13 x219 y217.8235 gradientUnitsuserSpaceOnUse data-v-0cd7e026 data-v-0cd7e026>stop stop-color#ECDBBA stop-opacity0.49 data-v-0cd7e026 data-v-0cd7e026>/stop>stop offset1 stop-color#ECDBBA data-v-0cd7e026 data-v-0cd7e026>/stop>/linearGradient>/defs>/svg>/div>/div> div classhome-divider data-v-26577059>/div> a nameabout classanchor data-v-26577059>/a> div idabout-section classcontainer data-v-7f1eb96d data-v-2d824b8a data-v-26577059>div classtitle-col data-v-7f1eb96d>svg width25 height37 viewBox0 0 25 37 fillnone xmlnshttp://www.w3.org/2000/svg classtitle-arrow data-v-7f1eb96d data-v-7f1eb96d>g filterurl(#filter0_d_27_129) data-v-7f1eb96d data-v-7f1eb96d>path dM23.1176 18L8.11765 32.8823L8.11764 2.99997L23.1176 18Z fill#C84C32 data-v-7f1eb96d data-v-7f1eb96d>/path>/g>g filterurl(#filter1_d_27_129) data-v-7f1eb96d data-v-7f1eb96d>path dM18.8235 17.9705L4 33L4 3L18.8235 17.9705Z fillurl(#paint0_linear_27_129) shape-renderingcrispEdges data-v-7f1eb96d data-v-7f1eb96d>/path>/g>defs data-v-7f1eb96d data-v-7f1eb96d>filter idfilter0_d_27_129 x6.35294 y1.70588 width18.5294 height33.4117 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-7f1eb96d data-v-7f1eb96d>feFlood flood-opacity0 resultBackgroundImageFix data-v-7f1eb96d data-v-7f1eb96d>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feOffset dy0.470588 data-v-7f1eb96d data-v-7f1eb96d>/feOffset>feGaussianBlur stdDeviation0.882353 data-v-7f1eb96d data-v-7f1eb96d>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-7f1eb96d data-v-7f1eb96d>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0 data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_27_129 data-v-7f1eb96d data-v-7f1eb96d>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_27_129 resultshape data-v-7f1eb96d data-v-7f1eb96d>/feBlend>/filter>filter idfilter1_d_27_129 x0.235294 y0.882353 width20 height35.1765 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-7f1eb96d data-v-7f1eb96d>feFlood flood-opacity0 resultBackgroundImageFix data-v-7f1eb96d data-v-7f1eb96d>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feOffset dx-1.17647 dy0.470588 data-v-7f1eb96d data-v-7f1eb96d>/feOffset>feGaussianBlur stdDeviation1.29412 data-v-7f1eb96d data-v-7f1eb96d>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-7f1eb96d data-v-7f1eb96d>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0 data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_27_129 data-v-7f1eb96d data-v-7f1eb96d>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_27_129 resultshape data-v-7f1eb96d data-v-7f1eb96d>/feBlend>/filter>linearGradient idpaint0_linear_27_129 x14 y118 x218.8235 y218 gradientUnitsuserSpaceOnUse data-v-7f1eb96d data-v-7f1eb96d>stop stop-color#ECDBBA stop-opacity0.49 data-v-7f1eb96d data-v-7f1eb96d>/stop>stop offset1 stop-color#ECDBBA data-v-7f1eb96d data-v-7f1eb96d>/stop>/linearGradient>/defs>/svg> span data-v-7f1eb96d>About me/span>/div> div classdivider data-v-7f1eb96d>/div> div classcontent-col data-v-7f1eb96d>div classcontent data-v-7f1eb96d>div classcontent data-v-7f1eb96d data-v-2d824b8a>p data-v-7f1eb96d data-v-2d824b8a> I’m a Software Engineer specialized in span classred data-v-7f1eb96d data-v-2d824b8a>Front-end/span> development and span classblue data-v-7f1eb96d data-v-2d824b8a>System programming/span>, with a Master’s degree in Computer Engineering. /p> p data-v-7f1eb96d data-v-2d824b8a> I’m span classred data-v-7f1eb96d data-v-2d824b8a>product-oriented/span>. Despite loving the technical side, I also deeply care about user experiences and design. /p> p data-v-7f1eb96d data-v-2d824b8a> Im currently working on a hrefhttps://borumi.com target_blank classred data-v-7f1eb96d data-v-2d824b8a>Borumi/a>, a video editor that allows creators to produce content in a fraction of the time. Im also the creator of a hrefhttps://espanso.org target_blank classred data-v-7f1eb96d data-v-2d824b8a>Espanso/a>, an open-source text expander used by thousands of people every day. You can find the others a href/projects classblue data-v-2d824b8a>here/a>. /p> p data-v-7f1eb96d data-v-2d824b8a> If you like technical topics, you might also enjoy my a href/blog classred data-v-2d824b8a>Blog/a>, a href/talks classred data-v-2d824b8a>Talks/a> and a hrefhttps://www.youtube.com/c/FedericoTerzi target_blank classred data-v-7f1eb96d data-v-2d824b8a>YouTube/a> channel. /p> p data-v-7f1eb96d data-v-2d824b8a> I really enjoy span classblue data-v-7f1eb96d data-v-2d824b8a>books/span>. I’m currently reading a hrefhttps://www.amazon.com/High-Performance-Browser-Networking-performance/dp/1449344763 target_blank classblue no-underline data-v-7f1eb96d data-v-2d824b8a>High Performance Browser Networking/a>, and I’ve previously read a hrefhttps://www.zero2prod.com/ target_blank classblue no-underline data-v-7f1eb96d data-v-2d824b8a>Zero To Production In Rust/a>. You can also check out my a href/books classred data-v-2d824b8a>book recommendations/a>. /p> p data-v-7f1eb96d data-v-2d824b8a> Im based in span classred data-v-7f1eb96d data-v-2d824b8a>Stockholm/span> (Sweden), though Im originally from Italy. /p>/div>/div>/div>/div> div classhome-divider data-v-26577059>/div> div idabout-section classregular-section-container data-v-2b471269 data-v-77ede1ec data-v-26577059>div classtitle-container data-v-2b471269>svg width25 height37 viewBox0 0 25 37 fillnone xmlnshttp://www.w3.org/2000/svg classtitle-arrow data-v-2b471269 data-v-2b471269>g filterurl(#filter0_d_27_129) data-v-2b471269 data-v-2b471269>path dM23.1176 18L8.11765 32.8823L8.11764 2.99997L23.1176 18Z fill#C84C32 data-v-2b471269 data-v-2b471269>/path>/g>g filterurl(#filter1_d_27_129) data-v-2b471269 data-v-2b471269>path dM18.8235 17.9705L4 33L4 3L18.8235 17.9705Z fillurl(#paint0_linear_27_129) shape-renderingcrispEdges data-v-2b471269 data-v-2b471269>/path>/g>defs data-v-2b471269 data-v-2b471269>filter idfilter0_d_27_129 x6.35294 y1.70588 width18.5294 height33.4117 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-2b471269 data-v-2b471269>feFlood flood-opacity0 resultBackgroundImageFix data-v-2b471269 data-v-2b471269>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-2b471269 data-v-2b471269>/feColorMatrix>feOffset dy0.470588 data-v-2b471269 data-v-2b471269>/feOffset>feGaussianBlur stdDeviation0.882353 data-v-2b471269 data-v-2b471269>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-2b471269 data-v-2b471269>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0 data-v-2b471269 data-v-2b471269>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_27_129 data-v-2b471269 data-v-2b471269>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_27_129 resultshape data-v-2b471269 data-v-2b471269>/feBlend>/filter>filter idfilter1_d_27_129 x0.235294 y0.882353 width20 height35.1765 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-2b471269 data-v-2b471269>feFlood flood-opacity0 resultBackgroundImageFix data-v-2b471269 data-v-2b471269>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-2b471269 data-v-2b471269>/feColorMatrix>feOffset dx-1.17647 dy0.470588 data-v-2b471269 data-v-2b471269>/feOffset>feGaussianBlur stdDeviation1.29412 data-v-2b471269 data-v-2b471269>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-2b471269 data-v-2b471269>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0 data-v-2b471269 data-v-2b471269>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_27_129 data-v-2b471269 data-v-2b471269>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_27_129 resultshape data-v-2b471269 data-v-2b471269>/feBlend>/filter>linearGradient idpaint0_linear_27_129 x14 y118 x218.8235 y218 gradientUnitsuserSpaceOnUse data-v-2b471269 data-v-2b471269>stop stop-color#ECDBBA stop-opacity0.49 data-v-2b471269 data-v-2b471269>/stop>stop offset1 stop-color#ECDBBA data-v-2b471269 data-v-2b471269>/stop>/linearGradient>/defs>/svg> span data-v-2b471269>Latest posts/span>/div> div classcontent-container data-v-2b471269>div classsection-content data-v-2b471269>div classcontent data-v-2b471269 data-v-77ede1ec>a href/blog/understanding-crdts-improving-our-set-chapter-2 classpost-link data-v-77ede1ec>div classcontent data-v-173c18e8 data-v-77ede1ec>span classdate data-v-173c18e8>February 25th, 2024/span> h3 classtitle data-v-173c18e8>Understanding CRDTs: Improving our Set (Chapter 2)/h3> p classsnippet data-v-173c18e8> In the previous article, we implemented a basic Set with support for additions and removals, as well as basic CRDT semantics. Despite working in simple cases, we also highlighted two significant limitations: /p>/div>/a> div classdivider data-v-2b471269 data-v-77ede1ec>/div>a href/blog/screencapturekit-failing-to-capture-the-entire-display classpost-link data-v-77ede1ec>div classcontent data-v-173c18e8 data-v-77ede1ec>span classdate data-v-173c18e8>January 27th, 2024/span> h3 classtitle data-v-173c18e8>ScreenCaptureKit failing to capture the entire Display/h3> p classsnippet data-v-173c18e8> I’ve just spend a good portion of this afternoon trying to understand why Apple’s ScreenCaptureKit did not behave as expected. My goal was simple: creating the simplest possible program to capture the entire display and analyse the generated buffers. /p>/div>/a> div classdivider data-v-2b471269 data-v-77ede1ec>/div>a href/blog/understanding-crdts-a-gentle-introduction-chapter-1 classpost-link data-v-77ede1ec>div classcontent data-v-173c18e8 data-v-77ede1ec>span classdate data-v-173c18e8>January 19th, 2024/span> h3 classtitle data-v-173c18e8>Understanding CRDTs: A Gentle Introduction (Chapter 1)/h3> p classsnippet data-v-173c18e8> In the past two months, I’ve been diving deeper into the realm of distributed systems. The catalyst that started my research was discovering the world of local-first applications, a class of software that allows users to access and modify their data locally, while seamlessly synchronizing across devices, even in the face of connection failures. /p>/div>/a> !---->/div> a href/blog classview-all-link data-v-77ede1ec>View all posts/a>/div>/div>/div> div classhome-divider data-v-26577059>/div> div idcontact-section classcontainer data-v-7f1eb96d data-v-0cc71886 data-v-26577059>div classtitle-col data-v-7f1eb96d>svg width25 height37 viewBox0 0 25 37 fillnone xmlnshttp://www.w3.org/2000/svg classtitle-arrow data-v-7f1eb96d data-v-7f1eb96d>g filterurl(#filter0_d_27_129) data-v-7f1eb96d data-v-7f1eb96d>path dM23.1176 18L8.11765 32.8823L8.11764 2.99997L23.1176 18Z fill#C84C32 data-v-7f1eb96d data-v-7f1eb96d>/path>/g>g filterurl(#filter1_d_27_129) data-v-7f1eb96d data-v-7f1eb96d>path dM18.8235 17.9705L4 33L4 3L18.8235 17.9705Z fillurl(#paint0_linear_27_129) shape-renderingcrispEdges data-v-7f1eb96d data-v-7f1eb96d>/path>/g>defs data-v-7f1eb96d data-v-7f1eb96d>filter idfilter0_d_27_129 x6.35294 y1.70588 width18.5294 height33.4117 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-7f1eb96d data-v-7f1eb96d>feFlood flood-opacity0 resultBackgroundImageFix data-v-7f1eb96d data-v-7f1eb96d>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feOffset dy0.470588 data-v-7f1eb96d data-v-7f1eb96d>/feOffset>feGaussianBlur stdDeviation0.882353 data-v-7f1eb96d data-v-7f1eb96d>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-7f1eb96d data-v-7f1eb96d>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0 data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_27_129 data-v-7f1eb96d data-v-7f1eb96d>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_27_129 resultshape data-v-7f1eb96d data-v-7f1eb96d>/feBlend>/filter>filter idfilter1_d_27_129 x0.235294 y0.882353 width20 height35.1765 filterUnitsuserSpaceOnUse color-interpolation-filterssRGB data-v-7f1eb96d data-v-7f1eb96d>feFlood flood-opacity0 resultBackgroundImageFix data-v-7f1eb96d data-v-7f1eb96d>/feFlood>feColorMatrix inSourceAlpha typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 resulthardAlpha data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feOffset dx-1.17647 dy0.470588 data-v-7f1eb96d data-v-7f1eb96d>/feOffset>feGaussianBlur stdDeviation1.29412 data-v-7f1eb96d data-v-7f1eb96d>/feGaussianBlur>feComposite in2hardAlpha operatorout data-v-7f1eb96d data-v-7f1eb96d>/feComposite>feColorMatrix typematrix values0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0 data-v-7f1eb96d data-v-7f1eb96d>/feColorMatrix>feBlend modenormal in2BackgroundImageFix resulteffect1_dropShadow_27_129 data-v-7f1eb96d data-v-7f1eb96d>/feBlend>feBlend modenormal inSourceGraphic in2effect1_dropShadow_27_129 resultshape data-v-7f1eb96d data-v-7f1eb96d>/feBlend>/filter>linearGradient idpaint0_linear_27_129 x14 y118 x218.8235 y218 gradientUnitsuserSpaceOnUse data-v-7f1eb96d data-v-7f1eb96d>stop stop-color#ECDBBA stop-opacity0.49 data-v-7f1eb96d data-v-7f1eb96d>/stop>stop offset1 stop-color#ECDBBA data-v-7f1eb96d data-v-7f1eb96d>/stop>/linearGradient>/defs>/svg> span data-v-7f1eb96d>Contact me/span>/div> div classdivider data-v-7f1eb96d>/div> div classcontent-col data-v-7f1eb96d>div classcontent data-v-7f1eb96d>div classcontent data-v-7f1eb96d data-v-0cc71886>p data-v-7f1eb96d data-v-0cc71886> If you’d like to span classblue data-v-7f1eb96d data-v-0cc71886>get in touch/span>, feel free to write me at: /p> a href/cdn-cgi/l/email-protection#6d0b0809081f040e0219081f1704545b2d0a000c0401430e0200 classblue email data-v-7f1eb96d data-v-0cc71886>span class__cf_email__ data-cfemail9ff9fafbfaedf6fcf0ebfaede5f6a6a9dff8f2fef6f3b1fcf0f2>email protected/span>/a> p data-v-7f1eb96d data-v-0cc71886> You can also find me on various socials, feel free to get it touch there too! /p> div classsocials data-v-7f1eb96d data-v-0cc71886>div classsocial data-v-7f1eb96d data-v-0cc71886>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg data-v-7f1eb96d data-v-0cc71886>path dM23 3.00005C22.0424 3.67552 20.9821 4.19216 19.86 4.53005C19.2577 3.83756 18.4573 3.34674 17.567 3.12397C16.6767 2.90121 15.7395 2.95724 14.8821 3.2845C14.0247 3.61176 13.2884 4.19445 12.773 4.95376C12.2575 5.71308 11.9877 6.61238 12 7.53005V8.53005C10.2426 8.57561 8.50127 8.18586 6.93101 7.39549C5.36074 6.60513 4.01032 5.43868 3 4.00005C3 4.00005 -1 13 8 17C5.94053 18.398 3.48716 19.099 1 19C10 24 21 19 21 7.50005C20.9991 7.2215 20.9723 6.94364 20.92 6.67005C21.9406 5.66354 22.6608 4.39276 23 3.00005V3.00005Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>/svg>a target_blank hrefhttps://twitter.com/terzi_federico data-v-7f1eb96d data-v-0cc71886>Twitter/a>/div> div classsocial data-v-7f1eb96d data-v-0cc71886>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg data-v-7f1eb96d data-v-0cc71886>g clip-pathurl(#clip0_31_53) data-v-7f1eb96d data-v-0cc71886>path dM16 21.9999V18.1299C16.0375 17.6531 15.9731 17.1737 15.811 16.7237C15.6489 16.2737 15.3929 15.8634 15.06 15.5199C18.2 15.1699 21.5 13.9799 21.5 8.51994C21.4997 7.12376 20.9627 5.78114 20 4.76994C20.4559 3.54844 20.4236 2.19829 19.91 0.999938C19.91 0.999938 18.73 0.649938 16 2.47994C13.708 1.85876 11.292 1.85876 9 2.47994C6.27 0.649938 5.09 0.999938 5.09 0.999938C4.57638 2.19829 4.54414 3.54844 5 4.76994C4.03013 5.78864 3.49252 7.1434 3.5 8.54994C3.5 13.9699 6.8 15.1599 9.94 15.5499C9.611 15.8899 9.35726 16.2953 9.19531 16.7399C9.03335 17.1844 8.96681 17.658 9 18.1299V21.9999M9 18.9999C4 20.4999 4 16.4999 2 15.9999L9 18.9999Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>/g>defs data-v-7f1eb96d data-v-0cc71886>clipPath idclip0_31_53 data-v-7f1eb96d data-v-0cc71886>rect width24 height24 fillwhite data-v-7f1eb96d data-v-0cc71886>/rect>/clipPath>/defs>/svg>a target_blank hrefhttps://github.com/federico-terzi/ data-v-7f1eb96d data-v-0cc71886>GitHub/a>/div>/div> div classsocials data-v-7f1eb96d data-v-0cc71886>div classsocial data-v-7f1eb96d data-v-0cc71886>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg data-v-7f1eb96d data-v-0cc71886>path dM16 8C17.5913 8 19.1174 8.63214 20.2426 9.75736C21.3679 10.8826 22 12.4087 22 14V21H18V14C18 13.4696 17.7893 12.9609 17.4142 12.5858C17.0391 12.2107 16.5304 12 16 12C15.4696 12 14.9609 12.2107 14.5858 12.5858C14.2107 12.9609 14 13.4696 14 14V21H10V14C10 12.4087 10.6321 10.8826 11.7574 9.75736C12.8826 8.63214 14.4087 8 16 8V8Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>path dM6 9H2V21H6V9Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>path dM4 6C5.10457 6 6 5.10457 6 4C6 2.89543 5.10457 2 4 2C2.89543 2 2 2.89543 2 4C2 5.10457 2.89543 6 4 6Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>/svg>a target_blank hrefhttps://www.linkedin.com/in/federico-terzi/ data-v-7f1eb96d data-v-0cc71886>Linkedin/a>/div> div classsocial data-v-7f1eb96d data-v-0cc71886>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg data-v-7f1eb96d data-v-0cc71886>path dM22.54 6.42C22.4212 5.94541 22.1793 5.51057 21.8387 5.15941C21.498 4.80824 21.0708 4.55318 20.6 4.42C18.88 4 12 4 12 4C12 4 5.12001 4 3.40001 4.46C2.92925 4.59318 2.50198 4.84824 2.16135 5.19941C1.82072 5.55057 1.5788 5.98541 1.46001 6.46C1.14522 8.20556 0.991243 9.97631 1.00001 11.75C0.988786 13.537 1.14277 15.3213 1.46001 17.08C1.59097 17.5398 1.83831 17.9581 2.17815 18.2945C2.51799 18.6308 2.93883 18.8738 3.40001 19C5.12001 19.46 12 19.46 12 19.46C12 19.46 18.88 19.46 20.6 19C21.0708 18.8668 21.498 18.6118 21.8387 18.2606C22.1793 17.9094 22.4212 17.4746 22.54 17C22.8524 15.2676 23.0063 13.5103 23 11.75C23.0112 9.96295 22.8572 8.1787 22.54 6.42V6.42Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>path dM9.75 15.02L15.5 11.75L9.75 8.47998V15.02Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround data-v-7f1eb96d data-v-0cc71886>/path>/svg>a target_blank hrefhttps://www.youtube.com/c/FedericoTerzi data-v-7f1eb96d data-v-0cc71886>YouTube/a>/div>/div>/div>/div>/div>/div>/div>/div> div classfooter-container data-v-d5d2bd86>p data-v-d5d2bd86>span classbold data-v-d5d2bd86>Designed/span> and span classbold data-v-d5d2bd86>coded/span> withspan classred data-v-d5d2bd86> ♥/span> by me. Copyright © Federico Terzi 2019-2024 - P.IVA 03864201201 /p>/div> div classsocial-bar-container>a hrefhttps://twitter.com/terzi_federico>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg>path dM23 3.00005C22.0424 3.67552 20.9821 4.19216 19.86 4.53005C19.2577 3.83756 18.4573 3.34674 17.567 3.12397C16.6767 2.90121 15.7395 2.95724 14.8821 3.2845C14.0247 3.61176 13.2884 4.19445 12.773 4.95376C12.2575 5.71308 11.9877 6.61238 12 7.53005V8.53005C10.2426 8.57561 8.50127 8.18586 6.93101 7.39549C5.36074 6.60513 4.01032 5.43868 3 4.00005C3 4.00005 -1 13 8 17C5.94053 18.398 3.48716 19.099 1 19C10 24 21 19 21 7.50005C20.9991 7.2215 20.9723 6.94364 20.92 6.67005C21.9406 5.66354 22.6608 4.39276 23 3.00005V3.00005Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>/svg>/a> div classsocial-bar-divider>/div> a hrefhttps://github.com/federico-terzi/>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg>g clip-pathurl(#clip0_31_53)>path dM16 21.9999V18.1299C16.0375 17.6531 15.9731 17.1737 15.811 16.7237C15.6489 16.2737 15.3929 15.8634 15.06 15.5199C18.2 15.1699 21.5 13.9799 21.5 8.51994C21.4997 7.12376 20.9627 5.78114 20 4.76994C20.4559 3.54844 20.4236 2.19829 19.91 0.999938C19.91 0.999938 18.73 0.649938 16 2.47994C13.708 1.85876 11.292 1.85876 9 2.47994C6.27 0.649938 5.09 0.999938 5.09 0.999938C4.57638 2.19829 4.54414 3.54844 5 4.76994C4.03013 5.78864 3.49252 7.1434 3.5 8.54994C3.5 13.9699 6.8 15.1599 9.94 15.5499C9.611 15.8899 9.35726 16.2953 9.19531 16.7399C9.03335 17.1844 8.96681 17.658 9 18.1299V21.9999M9 18.9999C4 20.4999 4 16.4999 2 15.9999L9 18.9999Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>/g>defs>clipPath idclip0_31_53>rect width24 height24 fillwhite>/rect>/clipPath>/defs>/svg>/a> div classsocial-bar-divider>/div> a hrefhttps://www.linkedin.com/in/federico-terzi/>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg>path dM16 8C17.5913 8 19.1174 8.63214 20.2426 9.75736C21.3679 10.8826 22 12.4087 22 14V21H18V14C18 13.4696 17.7893 12.9609 17.4142 12.5858C17.0391 12.2107 16.5304 12 16 12C15.4696 12 14.9609 12.2107 14.5858 12.5858C14.2107 12.9609 14 13.4696 14 14V21H10V14C10 12.4087 10.6321 10.8826 11.7574 9.75736C12.8826 8.63214 14.4087 8 16 8V8Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>path dM6 9H2V21H6V9Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>path dM4 6C5.10457 6 6 5.10457 6 4C6 2.89543 5.10457 2 4 2C2.89543 2 2 2.89543 2 4C2 5.10457 2.89543 6 4 6Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>/svg>/a> div classsocial-bar-divider>/div> a hrefhttps://www.youtube.com/c/FedericoTerzi>svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg>path dM22.54 6.42C22.4212 5.94541 22.1793 5.51057 21.8387 5.15941C21.498 4.80824 21.0708 4.55318 20.6 4.42C18.88 4 12 4 12 4C12 4 5.12001 4 3.40001 4.46C2.92925 4.59318 2.50198 4.84824 2.16135 5.19941C1.82072 5.55057 1.5788 5.98541 1.46001 6.46C1.14522 8.20556 0.991243 9.97631 1.00001 11.75C0.988786 13.537 1.14277 15.3213 1.46001 17.08C1.59097 17.5398 1.83831 17.9581 2.17815 18.2945C2.51799 18.6308 2.93883 18.8738 3.40001 19C5.12001 19.46 12 19.46 12 19.46C12 19.46 18.88 19.46 20.6 19C21.0708 18.8668 21.498 18.6118 21.8387 18.2606C22.1793 17.9094 22.4212 17.4746 22.54 17C22.8524 15.2676 23.0063 13.5103 23 11.75C23.0112 9.96295 22.8572 8.1787 22.54 6.42V6.42Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>path dM9.75 15.02L15.5 11.75L9.75 8.47998V15.02Z stroke#2E4364 stroke-width2 stroke-linecapround stroke-linejoinround>/path>/svg>/a>/div>/div>/div>/div>script data-cfasyncfalse src/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js>/script>script defer src/_nuxt/static/1767518764/state.js>/script>script src/_nuxt/7800ae4.js defer>/script>script src/_nuxt/ebbc7b7.js defer>/script>script src/_nuxt/17ba505.js defer>/script>script src/_nuxt/4293a24.js defer>/script>script src/_nuxt/cd10c32.js defer>/script> /body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]