1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=360, initial-scale=1"/><link rel="preload" as="image" href="/images/eulercircle.png"/><link rel="stylesheet" href="/assets/app-5wwjCYjY.css" data-precedence="default"/><title>Euler Void â A fictional emptiness.</title><meta name="description" content="Hello, I'm Josh, a software engineer and creative technologist based in Berlin."/><meta name="keywords"/><meta name="twitter:title" content="Euler Void â A fictional emptiness."/><meta name="twitter:description" content="Hello, I'm Josh, a software engineer and creative technologist based in Berlin."/><meta name="twitter:creator" content="@eulervoid"/><meta name="twitter:site" content="@eulervoid"/><meta name="og:type" content="website"/><meta name="og:title" content="Euler Void â A fictional emptiness."/><meta name="og:description" content="Hello, I'm Josh, a software engineer and creative technologist based in Berlin."/><link rel="modulepreload" href="/assets/index-CjnXGKRv.js"/><link rel="modulepreload" href="/assets/routes-Ck76Y3VS.js"/><link rel="modulepreload" href="/assets/Timeline-Xyry7rPx.js"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="manifest" href="/site.webmanifest" color="#ffffff"/><link rel="icon" href="/favicon.ico"/></head><body><div class="section-px flex justify-between items-center gap-4 h-20 md:h-24 border-b print:hidden"><a class="flex items-center gap-3 active" href="/" data-status="active" aria-current="page"><img src="/images/eulercircle.png" class="w-9 pixel-art"/><span class="text-xl text-white">eulervoid</span></a><div class="flex gap-7 items-center"><a class="hidden md:block hover:text-lime-300 font-bold" href="/#work" data-status="active" aria-current="page">Work</a><a class="hidden md:block hover:text-lime-300 font-bold" href="/#timeline" data-status="active" aria-current="page">Timeline</a><a class="text-black bg-white px-3 py-1 hover:bg-lime-300 hover:text-black! font-bold" href="/#footer" data-status="active" aria-current="page">Contact</a></div></div><!--$--><div class="relative"><div class="relative section flex flex-col justify-center items-center md:items-start min-h-[min(70vh,600px)]"><div class="absolute inset-0 w-full h-full"><!--$--><div class="relative w-full h-full"><canvas class="w-full h-full block" style="image-rendering:pixelated;opacity:0;transition:opacity 0.3s ease"></canvas><video class="hidden" playsInline="" muted="" loop=""></video></div><!--/$--></div><div class="max-w-110 z-1 bg-black border md:-ml-8"><div class="flex justify-between gap-2 items-center border-b px-2 py-1 h-[32px]"><div class="grow flex flex-col gap-[4px]"><span class="grow bg-gray-700 h-px"></span><span class="grow bg-gray-700 h-px"></span><span class="grow bg-gray-700 h-px"></span></div>Greeting<div class="grow flex flex-col gap-[4px]"><span class="grow bg-gray-700 h-px"></span><span class="grow bg-gray-700 h-px"></span><span class="grow bg-gray-700 h-px"></span></div></div><div class="space-y-2 px-5 md:px-8 py-7"><h1>Hello!</h1><p>Iâm Josh, a software engineer and creative technologist based in Berlin.</p><p class="whitespace-pre-wrap">From first draft to execution, I can help you build<!-- --> <span class="text-lime-300"><span class="undefined relative min-w-8">solutions<span class="bg-white absolute right-[-2px]" style="color:inherit;min-width:2px;height:100%"></span></span></span> <!-- -->that get you where you want to go.</p></div></div></div><div id="work" style="background-image:radial-gradient(circle, rgb(30 40 56) 1px, transparent 1px);background-size:32px 32px;background-position:center center" class="section border-t"><div class="grid grid-cols-2 md:grid-cols-4 gap-x-4 gap-y-3 mb-12"><h2 class="col-span-2">Work</h2></div><div class="relative w-full h-full flex flex-col pb-6"></div></div><div id="timeline" class="section border-t space-y-24 print:space-y-16 print:border-t-0"><div class="grid grid-cols-2 md:grid-cols-4 gap-x-4 gap-y-3 mb-24"><h2 class="col-span-2">Timeline</h2><p class="col-span-2 md:col-start-3"><p>I have a decade of professional experience shipping full-stack product and infrastru
1cture in <strong class="font-normal text-gray-200">TypeScript</strong>, <strong class="font-normal text-gray-200">Python</strong>, and <strong class="font-normal text-gray-200">Rust</strong>, with a background in <strong class="font-normal text-gray-200">C++</strong> audio programming, generative graphics and motion.</p></p></div><div class="grid grid-cols-2 md:grid-cols-4 gap-4 break-inside-avoid"><div class="grid grid-cols-[min-content_1fr] col-span-2 gap-x-1 sm:gap-x-4 items-start"><div class="w-3 h-3 bg-white m-2"><svg class="hidden print:block inset-0 h-full w-full" aria-hidden="true" viewBox="0 0 100 100"><rect width="100" height="100" fill="#000"></rect></svg></div><div class="items-start"><h6 class="col-start-2">Wave Casual UG</h6><p class="col-start-2">Co-Founder, Lead Developer<br/>2016 â 2021</p></div></div><div class="col-span-2 space-y-2 ml-8 sm:ml-11.5 md:ml-0"><p>Led development across the company's projects:</p> 2<ul> 3<li>Designed, developed, and <strong class="font-normal text-gray-200">shipped</strong> <strong class="font-normal text-gray-200">Nylon</strong>, a synthesizer plugin built around a novel geometric oscillator; received coverage in MusicRadar, Gearnews, and Synth Anatomy</li> 4<li>Planned, built, and deployed cloud services supporting Nylon's payment system and social features</li> 5<li>Prototyped an AI-based audio plugin for a client in the film industry</li> 6</ul></div></div><div class="grid grid-cols-2 md:grid-cols-4 gap-4 break-inside-avoid"><div class="grid grid-cols-[min-content_1fr] col-span-2 gap-x-1 sm:gap-x-4 items-start"><div class="w-3 h-3 bg-white m-2"><svg class="hidden print:block inset-0 h-full w-full" aria-hidden="true" viewBox="0 0 100 100"><rect width="100" height="100" fill="#000"></rect></svg></div><div class="items-start"><h6 class="col-start-2">objekt klein a e.V.</h6><p class="col-start-2">Freelance Software Engineer<br/>2020 â 2022</p></div></div><div class="col-span-2 space-y-2 ml-8 sm:ml-11.5 md:ml-0"><p>Designed and developed the <strong class="font-normal text-gray-200">Virtual Club</strong>, an interactive digital recreation of <strong class="font-normal text-gray-200">objekt klein a</strong>, where users could explore as smiley avatars, listen to DJ sets, and visit digital exhibitions.</p> 7<ul> 8<li>Built a <strong class="font-normal text-gray-200">real-time Rust backend</strong> using Tokio, Axum and Tungstenite to synchronize avatar movement over WebSockets and provide <strong class="font-normal text-gray-200">WebRTC signaling for voice chat</strong> between users.</li> 9<li>Scanned the physical venue and reconstructed it via MeshRoom and Blender to create the clubâs interactive 3D environment.</li> 10<li>Supported <strong class="font-normal text-gray-200">14 events with up to 500 concurrent users</strong>, featuring international DJs and artists during the COVID-19 lockdowns. The project received the <strong class="font-normal text-gray-200">Applaus Award for Innovation in 2022</strong>.</li> 11</ul></div></div><div class="grid grid-cols-2 md:grid-cols-4 gap-4 break-inside-avoid"><div class="grid grid-cols-[min-content_1fr] col-span-2 gap-x-1 sm:gap-x-4 items-start"><div class="w-3 h-3 bg-white m-2"><svg class="hidden print:block inset-0 h-full w-full" aria-hidden="true" viewBox="0 0 100 100"><rect width="100" height="100" fill="#000"></rect></svg></div><div class="items-start"><h6 class="col-start-2">Centre for Tactile Internet 12TU Dresden</h6><p class="col-start-2">Freelance Software Engineer<br/>2021</p></div></div><div class="col-span-2 space-y-2 ml-8 sm:ml-11.5 md:ml-0"><p>Built interactive demos using Unity and TouchDesigner:</p> 13<ul> 14<li>A 3D avatar that mirrored a pianistâs live performance using motion capture, along with an audio-reactive visualization</li> 15<li>A surfing minigame controlled with a real surfboard</li> 16</ul></div></div><div class="grid grid-cols-2 md:grid-cols-4 gap-4 break-inside-avoid"><div class="grid grid-cols-[min-content_1fr] col-span-2 gap-x-1 sm:gap-x-4 items-start"><div class="w-3 h-3 bg-white m-2"><svg class="hidden print:block inset-0 h-full w-full" aria-hidden="true" viewBox="0 0 100 100"><rect width="100" height="100" fill="#000"></rect></svg></div><div class="items-start"><h6 class="col-start-2">HolyPoly GmbH</h6><p class="col-start-2">Freelance Software Engineer<br/>2021 â 2023</p></div></div><div class="col-span-2 space-y-2 ml-8 sm:ml-11.5 md:ml-0"><p>Built interactive prototypes and websites supporting recycling campaigns for clients 17in the plastics industry, from landing pages to minigames.</p></div></div><div class="grid grid-cols-2 md:grid-cols-4 gap-4 break-inside-avoid"><div class="grid grid-cols-[min-content_1fr] col-span-2 gap-x-1 sm:gap-x-4 items-start"><div class="w-3 h-3 bg-white m-2"><svg class="hidden print:block inset-0 h-full w-full" aria-hidden="true" viewBox="0 0 100 100"><rect width="100" height="100" fill="#000"></rect></svg></div><div class="items-start"><h6 class="col-start-2">Chaos Computer Club</h6><p class="col-start-2">Freelance Creative Technologist<br/>2023 â 2025</p></div></div><div class="col-span-2 space-y-2 ml-8 sm:ml-11.5 md:ml-0"><p>Collaborated with RoboKid to design style guides, merchandise, and generative title animations 18for <strong class="font-normal text-gray-200">37C3</strong> and <strong class="font-normal text-gray-200">38C3</strong>, editions of the <strong class="font-normal text-gray-200">Chaos Communication Congress</strong> that each attracted 19approximately <strong class="font-normal text-gray-200">15,000 attendees</strong>.</p></div></div><div class="grid grid-cols-2 md:grid-cols-4 gap-4 break-inside-avoid"><div class="grid grid-cols-[min-content_1fr] col-span-2 gap-x-1 sm:gap-x-4 items-start"><div class="w-3 h-3 bg-white m-2"><svg class="hidden print:block inset-0 h-full w-full" aria-hidden="true" viewBox="0 0 100 100"><rect width="100" height="100" fill="#000"></rect></svg></div><div class="items-start"><h6 class="col-start-2">Enerithm Technology GmbH</h6><p class="col-start-2">Freelance Lead Engineer, 20Acting CTO<br/>2024 â 2025</p></div></div><div class="col-span-2 space-y-2 ml-8 sm:ml-11.5 md:ml-0"><p>Led technical development of <strong class="font-normal text-gray-200">Energuide</strong>, an AI-based energy-efficiency platform at a seed-stage 21startup, managing a <strong class="font-normal text-gray-200">team of four engineers</strong>:</p> 22<ul> 23<li>Took the product <strong class="font-normal text-gray-200">from concept to a live MVP in 6 months</strong> with its first customers, including large real estate agencies</li> 24<li>Owned system architecture, chatbot development, data pipelines, evaluation, testing, and continuous deployment</li> 25<li>Designed the UI/UX and hired engineers to expand the team as demand grew</li> 26</ul></div></div><div class="grid grid-cols-2 md:grid-cols-4 gap-4 break-inside-avoid"><div class="grid grid-cols-[min-content_1fr] col-span-2 gap-x-1 sm:gap-x-4 items-start"><div class="w-3 h-3 bg-white m-2"><svg class="hidden print:block inset-0 h-full w-full" aria-hidden="true" viewBox="0 0 100 100"><rect width="100" height="100" fill="#000"></rect></svg></div><div class="items-start"><h6 class="col-start-2">Myceli.AI</h6><p class="col-start-2">Freelance Software Engineer<br/>2025 â 2026</p></div></div><div class="col-span-2 space-y-2 ml-8 sm:ml-11.5 md:ml-0"><p>Led stack modernization and development of new payment infrastru
26cture for <strong class="font-normal text-gray-200">pollinations.ai</strong>, 27an open generative media API with over 500 apps built on it:</p> 28<ul> 29<li>Ported existing generation services to TypeScript</li> 30<li>Added a Cloudflare Workers authentication proxy in front of the generation APIs, with automatically generated OpenAPI documentation</li> 31<li>Implemented usage metering for text and image APIs, with end-to-end tracing from request to billing</li> 32<li>Built a batching cache that processed <strong class="font-normal text-gray-200">millions of events per day</strong> while keeping billing writes below the provider's limit of 100 requests per second</li> 33<li>Implemented credits and invoicing through Polar.sh</li> 34</ul></div></div></div></div>
34<script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script>
34<!--/$--><div id="footer" class="section flex flex-col gap-18 border-t print:invisible"><div class="flex flex-col gap-2 max-w-100"><h2>Let's talk!</h2><p>Have a project in mind? I'll be happy to hear from you and explore together if it's a good fit.</p><a href="mailto:[email protected]" class="text-black bg-white self-start px-4 py-2 ligatures mt-7 transition-colors duration-100 hover:bg-lime-300 hover:text-black!">[email protected]</a></div><div class="grid grid-rows-5 md:grid-rows-2 grid-flow-col gap-x-12 gap-y-3"><span class="col-span-2">(c) 2025</span><span class="text-white col-span-2">eulervoid.com</span><span class="col-span-2 md:hidden"></span><a class="transition-colors duration-100 hover:text-lime-300" href="/imprint">Imprint</a><a class="transition-colors duration-100 hover:text-lime-300" href="/privacy">Privacy</a><a href="https://github.com/eulervoid" class="transition-colors duration-100 hover:text-lime-300">Github</a><a href="https://instagram.com/eulervoid" class="transition-colors duration-100 hover:text-lime-300">Instagram</a></div></div>
34<script data-tsr-stream-part="">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-CjnXGKRv.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-CjnXGKRv.js"}}]},"/":$R[8]={preloads:$R[9]=["/assets/routes-Ck76Y3VS.js","/assets/Timeline-Xyry7rPx.js"]}}},matches:$R[10]=[$R[11]={i:"__root__�",u:1790977980290,s:"success",ssr:!0},$R[12]={i:"��",u:1790977980290,s:"success",ssr:!0}]})($R["tsr"]);$_TSR.e();{let s=document.currentScript,p;while((p=s.previousElementSibling)&&p.hasAttribute('data-tsr-stream-part'))p.remove();s.remove()}</script>
34<script type="module" async="" src="/assets/index-CjnXGKRv.js"></script>
34<script>document.currentScript.remove();/*$tsr-stream-boundary*/</script>
34</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.