<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"><meta name="description" content="Jerome Dahdah, a location-independent freelance frontend developer based in Utrecht, Netherlands. Frequent traveller and coder."><meta name="keywords" content="digital nomad, minimalist, designer, travel, location independent, minimalism"><meta name="author" content="Jerome Dahdah"><meta name="twitter:card" content="summary"><link rel="canonical" href="https://www.dahdah.io/"><link rel="preload" href="/fonts/dmsans.woff2" as="font" type="font/woff2" crossorigin><!-- Pinterest--><meta name="p:domain_verify" content="465c1b2e962d07bb4fb5195d21b0aa2f"><!-- Mastodon --><link rel="me" href="https://mastodon.social/@dahdah"><meta name="generator" content="Astro v7.0.0"><link rel="icon" href="/favicon.svg" type="image/svg+xml"><link rel="icon" href="/favicon.ico" sizes="32x32"><link rel="icon" href="/favicon.ico" sizes="any"><title>dahdah.io/</title><link rel="stylesheet" href="/_astro/Layout.DVi-iGwA.css"></head><body id="page-top" class="bg-white text-black dark:bg-stone-950 dark:text-white"><a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-9999 focus:rounded-md focus:bg-white focus:px-4 focus:py-3 focus:text-base focus:font-medium focus:text-black focus:shadow-lg focus:outline-2 focus:outline-offset-2 focus:outline-red-700 dark:focus:bg-stone-900 dark:focus:text-white">Skip to main content</a><div class="relative flex h-full min-h-dvh w-full"><div id="site-nav-root" class="group/nav relative z-70 min-h-0 w-0 flex-none lg:z-auto lg:contents"><button type="button" id="site-nav-toggle" class="fixed top-[calc(1rem+env(safe-area-inset-top))] right-[calc(1rem+env(safe-area-inset-right))] z-60 flex h-11 w-11 cursor-pointer items-center justify-center overflow-hidden rounded-full text-black backdrop-blur-3xl backdrop-brightness-95 lg:hidden dark:border-stone-600 dark:bg-stone-900/10 dark:text-white [@media(prefers-reduced-transparency:reduce)]:border [@media(prefers-reduced-transparency:reduce)]:border-stone-200 [@media(prefers-reduced-transparency:reduce)]:bg-white [@media(prefers-reduced-transparency:reduce)]:shadow-sm [@media(prefers-reduced-transparency:reduce)]:backdrop-blur-none [@media(prefers-reduced-transparency:reduce)]:backdrop-brightness-100 dark:[@media(prefers-reduced-transparency:reduce)]:border-stone-600 dark:[@media(prefers-reduced-transparency:reduce)]:bg-stone-900" aria-controls="site-nav" aria-expanded="false"><span class="sr-only">Open or close site navigation</span><span class="flex size-full items-center justify-center group-[.nav-mobile-open]/nav:hidden"><svg class="size-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M4 6h16M4 12h16M4 18h16"></path></svg></span><span class="hidden size-full items-center justify-center bg-white text-black group-[.nav-mobile-open]/nav:flex dark:bg-stone-950 dark:text-white"><svg class="size-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M18 6 6 18M6 6l12 12"></path></svg></span></button><button type="button" id="site-nav-backdrop" tabindex="-1" class="pointer-events-none fixed inset-0 z-40 bg-black/40 opacity-0 group-[.nav-animate]/nav:transition-opacity group-[.nav-animate]/nav:duration-200 group-[.nav-animate]/nav:ease-in-out group-[.nav-mobile-open]/nav:pointer-events-auto group-[.nav-mobile-open]/nav:opacity-100 motion-reduce:transition-none lg:hidden [@media(prefers-reduced-transparency:reduce)]:bg-black" aria-label="Close navigation"></button><nav id="site-nav" aria-hidden="true" inert class="w-dvw min-[375px]:w-64 3xl:w-80 fixed inset-y-0 right-0 z-50 flex h-dvh max-h-dvh min-h-dvh flex-none translate-x-full transform flex-col overflow-hidden bg-white pt-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)] group-[.nav-animate]/nav:transition group-[.nav-animate]/nav:duration-200 group-[.nav-animate]/nav:ease-in-out motion-reduce:transition-none group-[.nav-mobile-open]/nav:translate-x-0 lg:relative lg:inset-auto lg:z-10 lg:h-dvh lg:max-h-dvh lg:min-h-dvh lg:w-56 lg:translate-x-0 lg:bg-neutral-50 lg:pt-0 lg:pb-0 2xl:w-72 dark:bg-stone-900 dark:text-white lg:dark:bg-stone-900 font-extrabold"><div class="flex h-full min-h-0 flex-1 flex-col"><div class="flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto p-14 lg:p-10 2xl:p-14"><a href="/"><span aria-hidden="true">dahdah.io</span><span class="sr-only">home</span></a><a href="/now/"><span aria-hidden="true">/</span>now</a><a href="/coffee/"><span aria-hidden="true">/</span>coffee</a><a href="/running/"><span aria-hidden="true">/</span>running</a><a href="/travel/"><span aria-hidden="true">/</span>travel</a><a href="/quotes/"><span aria-hidden="true">/</span>quotes</a><a href="/colophon/"><span aria-hidden="true">/</span>colophon</a></div><div class="mt-auto inline-grid w-fit grid-cols-3 items-start gap-5 p-14 pt-5 lg:gap-6 lg:p-10 lg:pt-4 2xl:p-14 2xl:pt-5"><a href="#email" rel="noopener" aria-label="Email" title="Email" data-email-link class="inline-flex items-center justify-center"><svg class="h-5 w-5 shrink-0" fill="currentColor" aria-hidden="true" focusable="false"><use href="/sprites.svg#email"></use></svg></a><a href="https://github.com/jdahdah" target="_blank" rel="noopener" aria-label="GitHub" title="GitHub" class="inline-flex items-center justify-center"><svg class="h-5 w-5 shrink-0" fill="currentColor" aria-hidden="true" focusable="false"><use href="/sprites.svg#github"></use></svg></a><a href="https://twitter.com/parasight" target="_blank" rel="noopener" aria-label="Twitter" title="Twitter" class="inline-flex items-center justify-center"><svg class="h-5 w-5 shrink-0" fill="currentColor" aria-hidden="true" focusable="false"><use href="/sprites.svg#twitter"></use></svg></a><a href="https://instagram.com/parasight" target="_blank" rel="noopener" aria-label="Instagram" title="Instagram" class="inline-flex items-center justify-center"><svg class="h-5 w-5 shrink-0" fill="currentColor" aria-hidden="true" focusable="false"><use href="/sprites.svg#instagram"></use></svg></a><a href="https://mastodon.social/@dahdah" target="_blank" rel="noopener" aria-label="Mastodon" title="Mastodon" class="inline-flex items-center justify-center"><svg class="h-5 w-5 shrink-0" fill="currentColor" aria-hidden="true" focusable="false"><use href="/sprites.svg#mastodon"></use></svg></a><a href="https://nomads.com/@dahdah" target="_blank" rel="noopener" aria-label="Nomads.com" title="Nomads.com" class="inline-flex items-center justify-center"><svg class="h-5 w-5 shrink-0" fill="currentColor" aria-hidden="true" focusable="false"><use href="/sprites.svg#nomads"></use></svg></a></div></div></nav></div><script type="module">globalThis.process??={},globalThis.process.env??={};var e=document.getElementById(`site-nav-root`),t=document.getElementById(`site-nav-toggle`),n=document.getElementById(`site-nav-backdrop`),r=document.getElementById(`site-nav`),i=document.querySelector(`[data-email-link]`);function a(){return window.matchMedia(`(max-width: 1023px)`).matches}function o(){if(!i)return`#email`;let e=[[100,97,104,100,97,104,46,105,111],[100,97,104,100,97,104,46,111,114,103]].map(e=>String.fromCharCode(...e)).join(`@`);return`${[`mai`,`lto`,`:`].join(``)}${e}`}function s(e){if(!r)return;let t=a()&&!e;r.toggleAttribute(`inert`,t),r.setAttribute(`aria-hidden`,String(t))}function c(n){!e||!t||(e.classList.toggle(`nav-mobile-open`,n),t.setAttribute(`aria-expanded`,String(n)),s(n))}function l(t){e?.classList.toggle(`nav-animate`,t)}function u(e){l(!0),c(e),window.setTimeout(()=>l(!1),220)}function d(e=!1){if(e){u(!1);return}c(!1)}t?.addEventListener(`click`,()=>{e&&u(!e.classList.contains(`nav-mobile-open`))}),n?.addEventListener(`click`,()=>d(!0)),i?.addEventListener(`pointerenter`,()=>{i.href=o()}),i?.addEventListener(`focus`,()=>{i.href=o()}),i?.addEventListener(`click`,()=>{i.href=o()}),r?.querySelectorAll(`a`).forEach(e=>{e.addEventListener(`click`,()=>{a()&&d(!0)})}),document.addEventListener(`keydown`,n=>{n.key===`Escape`&&e?.classList.contains(`nav-mobile-open`)&&(d(!0),t?.focus())}),window.addEventListener(`resize`,()=>{a()||d(),s(e?.classList.contains(`nav-mobile-open`)??!1)}),s(e?.classList.contains(`nav-mobile-open`)??!1);</script><div class="relative z-0 flex min-h-0 max-w-full flex-1"><div class="relative flex max-h-dvh w-full min-w-0 flex-1 flex-col overflow-y-auto text-lg font-medium lg:text-xl">
  <main id="main-content" class="relative z-10 max-w-3xl p-5 pt-[calc(env(safe-area-inset-top)+1.5rem)] md:p-14"><div class="prose"><h1 class="text-lg font-bold lowercase"><span aria-hidden="true"><span class="lg:hidden">dahdah.io</span>/</span><span class="sr-only">home</span></h1><br><div class="flex flex-col gap-6"><p>Hi! I'm Jerome Dahdah, a location-independent <a href="https://www.dahdah.de/" target="_blank" rel="noopener">freelance frontend developer</a> based in Utrecht, Netherlands.</p><p>This little website serves as a playground for me to try out new technologies and ideas. It's constantly changing.</p><p>Check out what I'm doing <a href="/now/">now</a>, my <a href="/coffee/">coffee</a> and <a href="/running/">running</a> stats, my <a href="/travel/">travel map</a>, and my favorite <a href="/quotes/">quotes</a>.</p></div></div></main>
<footer class="relative z-10 text-sm mt-auto w-full max-w-3xl p-5 pt-10 md:p-14 md:pt-10"><p>&copy; 2026 Jerome Dahdah • <a href="/privacy-policy/" class="underline-offset-2 hover:underline">Privacy Policy</a></p></footer><a href="#page-top" class="sr-only focus:not-sr-only focus:m-5 focus:self-start focus:rounded-md focus:bg-white focus:px-4 focus:py-3 focus:text-base focus:font-medium focus:text-black focus:shadow-lg focus:outline-2 focus:outline-offset-2 focus:outline-red-700 dark:focus:bg-stone-900 dark:focus:text-white">Back to top</a></div></div></div></body></html>