Products Produkte About Über mich Contact Kontakt

Ohne Titel, Acryl auf LeinwandUntitled, acrylic on canvas · Seed 4831 ·

Software Studio · Vienna

Software-Studio · Wien

Built, not talked about.

Gebaut, nicht geredet.

Software with purpose. And beauty.

Software mit Sinn und Nutzen. Und schön.

Web & mobile apps Web- & Mobile-Apps Data-driven products Datengetriebene Produkte AI that's actually useful KI, die nützlich ist Design you notice Gestaltung, die man merkt
“The fastest way to learn is to build.”
„Der schnellste Weg zu lernen ist zu bauen.“
“You have to keep the old world running while you build the new one.”
„Du musst die alte Welt am Laufen halten, während du die neue baust.“

None of these started as a plan. They started because I needed them.

Keines dieser Projekte war geplant. Sie sind entstanden, weil ich sie gebraucht habe.

I wanted to know what finish time I could realistically aim for on race day, so I built Run with Alva. And I was tired of calling around to find out which tennis court was free, so I built the MTV Hernals app to just book one and see what's open. Both began as my own small annoyance, and then I started building — talking through the idea, trying things, watching it actually come together on screen. What got me hooked was the pace: ten or fifteen features in an afternoon, fixing bugs, tweaking the branding and cleaning up the UI as I went. But the best part was learning a whole new area step by step, figuring out how it really works while I built it.

Ich wollte wissen, welche Zielzeit am Renntag realistisch ist — also habe ich Run with Alva gebaut. Und ich hatte es satt, herumzutelefonieren, um herauszufinden, welcher Tennisplatz frei ist — also habe ich die MTV-Hernals-App gebaut, um einfach einen Platz zu buchen und zu sehen, was offen ist. Beides begann als eigene kleine Frustration, und dann habe ich angefangen zu bauen: die Idee durchsprechen, Dinge ausprobieren, zusehen, wie am Bildschirm wirklich etwas entsteht. Was mich gepackt hat, war das Tempo: zehn oder fünfzehn Features an einem Nachmittag, Bugs beheben, am Branding feilen und nebenbei das UI aufräumen. Am schönsten war aber, ein völlig neues Gebiet Schritt für Schritt zu lernen und beim Bauen zu verstehen, wie es wirklich funktioniert.

But the tools are not the point. The point is staying close to the real problem you set out to solve — not losing your time hunting for the ten killer prompts that will supposedly change everything. The fastest way to learn is to build. So I build. Digital products in days, not quarters. That's the whole idea behind staying curious: stop reading about it, and start.

Aber die Tools sind nicht der Punkt. Der Punkt ist, nah am eigentlichen Problem zu bleiben, das man lösen will — und nicht seine Zeit damit zu verlieren, nach den zehn Killer-Prompts zu suchen, die angeblich alles verändern. Der schnellste Weg zu lernen ist zu bauen. Also baue ich. Digitale Produkte in Tagen, nicht Quartalen. Genau darum geht es bei stay curious: nicht länger darüber lesen, sondern anfangen.

Solo · Web App

Solo · Web App

2026

Next.js 14 Supabase Vercel Anthropic API

Run with Alva — Race Prognosis & Training Planning

Run with Alva — Wettkampfprognose & Trainingsplanung

A personal running-analytics web app that turns scattered training data into a clear answer to one question: can I actually hit my race goal? A full training history flows in automatically via Strava — every run with its splits, heart rate and temperature — alongside real race results and daily readiness values, feeding a VDOT-based prediction engine that projects finish times for 5K, 10K, and half-marathon — and shows the gap to your target. A race-day correction adjusts the forecast for the weather and terrain you'll actually run in, and the result sits next to Garmin's and Runalytics' estimates — as a deviation, not a verdict, because only real races settle who was closer. Designed, developed, and deployed end-to-end as a solo project.

Eine persönliche Lauf-Analytics-Web-App, die verstreute Trainingsdaten in eine klare Antwort auf eine Frage verwandelt: Kann ich mein Wettkampfziel tatsächlich erreichen? Die komplette Trainingshistorie fließt automatisch über Strava ein — jeder Lauf mit Splits, Puls und Temperatur — dazu echte Wettkampfergebnisse und tägliche Readiness-Werte, in eine VDOT-basierte Prognose-Engine, die Zielzeiten für 5 km, 10 km und Halbmarathon hochrechnet und die Lücke zum Ziel sichtbar macht. Eine Renntag-Korrektur passt die Prognose an Wetter und Streckenprofil an, die dich tatsächlich erwarten, und das Ergebnis steht neben den Schätzungen von Garmin und Runalytics — als Abweichung, nicht als Wertung, denn welche näher lag, zeigen erst echte Rennen. Von Anfang bis Ende selbst konzipiert, entwickelt und deployt.

Why I built this

Warum ich das gebaut habe

Run with Alva is really just everything I love about running in one place — tracking, chasing goals, the insights, building a plan, working backwards from a race date, running it, and then starting over. Every race becomes the starting point for the next one. Funnily enough, that's also how I build: try something, test it, do it again. For me the app sits on two things I genuinely enjoy: taking my own training seriously, with a clean and simple design, and getting AI to be useful rather than chatty — Alva answers questions about my training, but only from data that's actually there, and says so when it isn't. Honestly, the app itself is only half of it. The part I keep coming back for is the process — getting completely absorbed in it, head down, solving something that actually matters to me. That's why I want to keep building. A domain, a mail service, an app, whatever it is, it's never far from being real.

Run with Alva ist eigentlich nur alles, was ich am Laufen liebe, an einem Ort — tracken, Ziele verfolgen, die Insights, einen Plan bauen, vom Renndatum rückwärts rechnen, das Rennen laufen und dann wieder von vorn. Jedes Rennen wird zum Startpunkt für das nächste. Komischerweise baue ich genauso: etwas ausprobieren, testen, nochmal machen. Für mich steht die App auf zwei Dingen, die mir wirklich Spaß machen: mein eigenes Training ernst zu nehmen, mit einem klaren, schlichten Design, und KI dazu zu bringen, nützlich statt geschwätzig zu sein — Alva beantwortet Fragen zu meinem Training, aber nur aus Daten, die wirklich da sind, und sagt es, wenn sie fehlen. Ehrlich gesagt ist die App selbst nur die halbe Sache. Worauf ich immer wieder zurückkomme, ist der Prozess — völlig darin zu versinken, den Kopf unten, und etwas zu lösen, das mir wirklich wichtig ist. Deshalb will ich weiterbauen. Eine Domain, ein Mail-Service, eine App, was auch immer — es ist nie weit davon entfernt, real zu werden.

Features

Funktionen

  • ·VDOT prediction engine — three-pillar model (VDOT, Riegel, lactate threshold) weighting real race times, threshold pace, and VO₂max
  • ·VDOT-Prognose-Engine — Drei-Säulen-Modell (VDOT, Riegel, Laktatschwelle), gewichtet aus echten Wettkampfzeiten, Schwellen-Pace und VO₂max
  • ·Three-way forecast comparison — Garmin, Runalytics and Run with Alva side by side per distance, shown as a deviation, not a verdict: only real races settle who was closer
  • ·Drei-Wege-Prognosevergleich — Garmin, Runalytics und Run with Alva nebeneinander je Distanz, als Abweichung ausgewiesen, nicht als Wertung: welche Schätzung näher lag, zeigen erst echte Rennen
  • ·Race-day correction — live weather and terrain adjust the forecast for the conditions you'll actually run in
  • ·Renntag-Korrektur — aktuelles Wetter und Streckenprofil passen die Prognose an die realen Bedingungen an
  • ·Condition-adjusted form — one race, two VDOT values: a 28 °C race read as 38.0 raw scores 43.8 once heat and elevation are accounted for. The chart plots both.
  • ·Bedingungsbereinigte Form — ein Rennen, zwei VDOT-Werte: ein Rennen bei 28 °C ergibt roh 38,0, hitze- und höhenbereinigt 43,8. Der Chart zeigt beide Verläufe.
  • ·Readiness score (0–100) from training load, sleep, stress, and VO₂max — recalculated on every login
  • ·Readiness-Score (0–100) aus Trainingslast, Schlaf, Stress und VO₂max — bei jedem Login neu berechnet
  • ·Blood markers as health context only — ferritin, haemoglobin and more tracked over time, deliberately kept out of the forecast: no single lab value proves fitness, and the app says so
  • ·Blutwerte als reiner Gesundheits-Kontext — Ferritin, Hämoglobin und mehr im Verlauf, bewusst außerhalb der Prognose: kein einzelner Laborwert beweist Fitness, und die App sagt das auch
  • ·Base data with honest caveats — weight, VO₂max, threshold pace and BMI in trend, each with a note on what it does and doesn't say (BMI can't tell muscle from fat)
  • ·Grunddaten mit ehrlicher Einordnung — Gewicht, VO₂max, Schwellen-Pace und BMI im Verlauf, jeweils mit Hinweis, was der Wert aussagt und was nicht (BMI unterscheidet nicht Muskel und Fett)
  • ·Race lifecycle — planned goals move to history automatically on race day; every upcoming race shows the forecast and the gap to target, across 18 years of results
  • ·Wettkampf-Lebenszyklus — geplante Ziele wandern am Renntag automatisch in die Historie; jedes kommende Rennen zeigt Prognose und Lücke zum Ziel, über 18 Jahre Ergebnisse hinweg
  • ·AI-generated training plans — periodised backwards from race day into blocks and taper, with weekly volume and HR zones
  • ·KI-generierte Trainingspläne — vom Renntag rückwärts periodisiert in Blöcke und Taper, mit Wochenvolumen und HF-Zonen
  • ·Every plan explains itself — target pace checked against your threshold, recovery and weight read from real values, not assumptions
  • ·Jeder Plan begründet sich selbst — Zielpace gegen die Schwelle geprüft, Erholung und Gewicht aus echten Werten gelesen, nicht angenommen
  • ·Automatic Strava sync (OAuth) — full history, 200+ runs and 1,200+ km, each with splits, heart rate, temperature and indoor/outdoor
  • ·Automatischer Strava-Sync (OAuth) — komplette Historie, 200+ Läufe und 1.200+ km, jeweils mit Splits, Puls, Temperatur und drinnen/draußen
  • ·Nine sports tracked alongside running — tennis, strength, cycling, swimming and more — filterable by period, distance, environment and races only
  • ·Neun Sportarten neben dem Laufen — Tennis, Kraft, Radfahren, Schwimmen und mehr — filterbar nach Zeitraum, Distanz, Umgebung und nur Rennen
  • ·Personalized insights across 18 categories from real data
  • ·Personalisierte Insights über 18 Kategorien aus realen Daten
  • ·Ask Alva — ask anything about your training in plain language; answers draw only on your stored data, and say so honestly when something's missing rather than guessing
  • ·Frag Alva — Fragen zum eigenen Training in natürlicher Sprache; die Antwort stützt sich ausschließlich auf gespeicherte Daten und sagt ehrlich, wenn etwas fehlt, statt zu schätzen
  • ·GDPR-compliant, hosted on EU infrastructure (Supabase Paris)
  • ·DSGVO-konform, Hosting auf EU-Infrastruktur (Supabase Paris)
  • ·A dark interface with monospaced figures, because times are taken in at a glance, not read
  • ·Dunkles Interface mit Monospace-Ziffern, weil Zeiten im Blick erfasst werden, nicht gelesen
Methodology — 15 chapters in the app explain every formula and cite their sources. No black box.Methodik — 15 Kapitel in der App erklären jede Formel und nennen ihre Quellen. Keine Black Box.

The VDOT model

Das VDOT-Modell

the base formula every time prognosis is built on

die Basisformel, auf der jede Zeitprognose aufbaut

Three data sources

Drei Datenquellen

why race, threshold, and Garmin are computed together

warum Wettkampf, Schwelle und Garmin gemeinsam berechnet werden

Time weighting

Zeitgewichtung

why an older race counts less than a recent one

warum ein älteres Rennen weniger zählt als ein aktuelles

VDOT trend

VDOT-Trend

your personal fitness development, charted

deine persönliche Fitnessentwicklung, visualisiert

Negative split

Negative Split

how the pace table distributes your target time across kilometers

wie die Pace-Tabelle deine Zielzeit über die Kilometer verteilt

Temperature & topography

Temperatur & Topografie

how heat and elevation affect the prognosis and VDOT

wie Hitze und Höhenmeter Prognose und VDOT beeinflussen

Raw vs. adjusted VDOT

Roher vs. adjustierter VDOT

why one and the same race can yield two VDOT values

warum ein und dasselbe Rennen zwei VDOT-Werte ergeben kann

Race weighting

Wettkampf-Gewichtung

what percentage each race contributes to the prognosis, and why

welcher Prozentsatz jedes Rennen zur Prognose beiträgt, und warum

Forecast comparison

Prognosevergleich

what Garmin, Runalytics and Run with Alva each estimate — and why the gap is not a verdict

was Garmin, Runalytics und Run with Alva jeweils schätzen — und warum die Lücke keine Wertung ist

Age correction

Alterskorrektur

when and why the model factors in your age

wann und warum das Modell dein Alter einrechnet

Training readiness

Training-Readiness

how sleep, stress, and fitness produce the readiness score

wie Schlaf, Stress und Fitness den Readiness-Score ergeben

BMI

BMI

what the value says, and what it doesn't

was der Wert aussagt, und was nicht

Race lifecycle

Wettkampf-Lebenszyklus

how a goal becomes a result without double entry

wie aus einem Ziel ein Ergebnis wird, ohne Doppeleingabe

Dashboard overview

Dashboard-Übersicht

what the readiness card and weekly card show in detail

was die Readiness-Karte und die Wochen-Karte im Detail zeigen

Second opinion

Zweitmeinung

the Riegel formula as an independent cross-check on the forecast

die Riegel-Formel als unabhängige Zweitmeinung zur Prognose

Built with

Gebaut mit

Frontend & Design

Frontend & Design

Next.js 14 (App Router, Server Actions)ReactTailwind CSSRecharts / Data VisualizationResponsive Design & Design Systems

Backend & Data

Backend & Data

Supabase (Postgres, Auth, Row Level Security)SQL / Database Design & MigrationsREST API IntegrationOAuth 2.0 (Strava)Geo/Weather APIs (Open-Meteo)Data Modeling with Provenance TrackingGDPR-compliant, EU-hosted architecture

AI & Analytics

KI & Analytics

Anthropic API / LLM IntegrationGrounded Q&A over own data (no hallucinated metrics)Prompt EngineeringStructured AI Responses (schema-based)AI training-plan generation (periodisation, HR zones)Sports Science Modeling (VDOT, Riegel, Lactate Threshold)Backtesting & Calibration

DevOps & Quality

DevOps & Quality

Vercel DeploymentGit / GitHub / Conventional CommitsTypeScriptData Integrity & Error Handling

Domain Knowledge

Domänenwissen

Running Performance DiagnosticsTraining Planning & Race Forecasting
Run with Alva Dashboard: Wettkampf-Prognosen und Trainings-Analyse
View live project Zum Live-Projekt

What's next for Run with Alva

Wie es mit Run with Alva weitergeht

Forecast, plan, race-day correction and the health context are shipped. One thing is still open — and it's the one where the science demands the most care.

Prognose, Plan, Renntag-Korrektur und der Gesundheits-Kontext laufen. Eines ist noch offen — und ausgerechnet dort verlangt die Studienlage die meiste Sorgfalt.

01

Body composition, done honestly

Körperzusammensetzung, ehrlich gemessen

Weight and BMI are tracked, but BMI can't tell muscle from fat. Real body-fat data — measured under steady conditions, read as a trend — would give a fairer picture, fed in only where the science supports it.

Gewicht und BMI werden erfasst, aber der BMI unterscheidet nicht Muskel und Fett. Echte Körperfett-Daten — unter gleichen Bedingungen gemessen, als Trend gelesen — gäben ein faireres Bild, eingerechnet nur dort, wo die Wissenschaft es stützt.

Volunteer · Web App

Ehrenamtlich · Web App

2026

Vite + React Supabase Vercel Resend

MTV Hernals — Tennisplatz Buchung

A full-stack court booking system built pro bono for my tennis club MTV Hernals — replacing paper lists and phone calls with a self-service web app. Members book courts, manage fixed weekly slots, and receive opt-in email reminders. An admin panel handles member management, PDF export, and booking oversight. Built from scratch in my spare time: designed, developed, and deployed end-to-end.

Ein vollständiges Platzbuchungssystem, ehrenamtlich für den MTV Hernals Tennisverein entwickelt — als Ersatz für Papierlisten und Telefonanrufe. Mitglieder buchen Plätze selbst, verwalten Fixstunden und erhalten optionale E-Mail-Erinnerungen. Ein Admin-Panel deckt Mitgliederverwaltung, PDF-Export und Buchungsübersicht ab. Von Anfang bis Ende selbst konzipiert, entwickelt und deployt.

Features

Funktionen

  • ·Flexible bookings (max. 2/week, resets Monday)
  • ·Flexible Buchungen (max. 2/Woche, Reset montags)
  • ·Weekly fixed slots with admin override
  • ·Wöchentliche Fixstunden mit Admin-Override
  • ·Opt-in email notifications (confirmation, cancellation, 24h reminder)
  • ·Opt-in E-Mail-Benachrichtigungen (Bestätigung, Stornierung, 24h-Erinnerung)
  • ·Admin panel: member management, PDF export, full booking oversight
  • ·Admin-Panel: Mitgliederverwaltung, PDF-Export, vollständige Buchungsübersicht
  • ·GDPR-compliant data handling, hosted on EU infrastructure (Supabase Frankfurt)
  • ·DSGVO-konformes Datenschutzkonzept, Hosting auf EU-Infrastruktur (Supabase Frankfurt)
MTV Hernals App — Screenshot
View live project Zum Live-Projekt

Solo · PWA

Solo · PWA

2026

Vite + React Supabase Vercel ntfy.sh

Alvida — Family Calendar & Shared Lists

Alvida — Familienkalender & geteilte Listen

A mobile-first calendar and list app for families: appointments colour-coded per person, shared lists, push notifications. Every family is its own tenant — row-level security on all six data tables means one family can never see another's data, and each member has their own account rather than a shared login. Founding a family, invite links and roles all happen inside the app. Installable as a PWA and usable offline.

Eine mobile-first Kalender- und Listen-App für Familien: Termine farbcodiert pro Person, geteilte Listen, Push-Benachrichtigungen. Jede Familie ist ein eigener Mandant — Row-Level-Security auf allen sechs Datentabellen sorgt dafür, dass keine Familie die Daten einer anderen sieht, und jedes Mitglied hat ein eigenes Konto statt eines geteilten Logins. Familie gründen, Einladungslinks und Rollen laufen komplett in der App. Als PWA installierbar und offline nutzbar.

Features

Funktionen

  • ·Multi-tenancy from the ground up — every row carries a family id, enforced by RLS rather than by client-side filtering
  • ·Mandantenfähig von Grund auf — jede Zeile trägt eine Family-ID, durchgesetzt per RLS statt durch Filtern im Client
  • ·Push via ntfy — immediately when an appointment is created, plus a scheduled reminder 15 to 120 minutes before it starts
  • ·Push über ntfy — sofort beim Anlegen eines Termins, dazu eine geplante Erinnerung 15 bis 120 Minuten vorher
  • ·Weekly digest every Sunday as a Vercel cron job — timezone-aware, so “next week” means local time, not UTC
  • ·Wochen-Digest sonntags als Vercel-Cron — zeitzonenbewusst, damit „kommende Woche“ nach lokaler Zeit gilt, nicht nach UTC
  • ·Recurring events stored as a rule, not as rows — expanded only for the visible date range, so a weekly series stays one record
  • ·Serientermine als Regel gespeichert, nicht als Zeilen — expandiert nur für den sichtbaren Zeitraum, eine Wochenserie bleibt ein Datensatz
  • ·Runs without a backend too — no keys means demo mode with sample data, which keeps the UI workable on its own
  • ·Läuft auch ohne Backend — ohne Keys startet ein Demo-Modus mit Beispieldaten, damit das UI eigenständig bedienbar bleibt
  • ·Its own colour world and serif typography instead of stock components — a family calendar is opened every day, not once a quarter
  • ·Eigene Farbwelt und Serif-Typografie statt Standard-Komponenten — ein Familienkalender wird täglich geöffnet, nicht einmal im Quartal
Alvida: Familien-Kalender mit Wochenübersicht und Termin-Management
View live project Zum Live-Projekt

Solo · Web App

Solo · Web App

2026

Vite + React Supabase Vercel Anthropic API

MyPocket — Conversation Notes from Recordings

MyPocket — Gesprächsnotizen aus Aufnahmen

Recordings and transcripts from a Pocket voice recorder are synced into my own database and post-processed with Claude in three modes: summary, action items, and a cleanup pass that strips filler words and fixes punctuation without shortening anything. Every result is cached under a key built from the recording, the mode, a hash of the raw transcript and the prompt version — so reopening costs nothing, and a re-synced transcript invalidates the old answer instead of quietly serving it.

Aufnahmen und Transkripte eines Pocket-Recorders laufen in eine eigene Datenbank und werden mit Claude in drei Modi nachbearbeitet: Zusammenfassung, Action-Items und Glätten — Füllwörter raus, Satzzeichen korrigiert, ohne zu kürzen. Jedes Ergebnis wird unter einem Schlüssel aus Aufnahme, Modus, Hash des Roh-Transkripts und Prompt-Version gecacht — erneutes Öffnen kostet nichts, und ein neu synchronisiertes Transkript macht die alte Antwort ungültig, statt sie stillschweigend weiter auszuliefern.

Features

Funktionen

  • ·Cleanup is not summarisation — long transcripts are cut into overlapping chunks, processed one by one and reassembled in order
  • ·Glätten ist keine Kürzung — lange Transkripte werden in überlappende Abschnitte geschnitten, einzeln verarbeitet und in Originalreihenfolge zusammengefügt
  • ·A result is only cached once it validates — if the word count falls short of the source, it counts as truncated and is generated again
  • ·Gecacht wird erst, was die Validierung besteht — liegt die Wortzahl unter der Vorlage, gilt das Ergebnis als abgeschnitten und wird neu erzeugt
  • ·Search with a score threshold — the API always returns as many hits as asked for, so without a floor “no results” would never happen
  • ·Suche mit Score-Schwelle — die API liefert immer so viele Treffer wie angefragt, ohne Untergrenze gäbe es nie ein „keine Treffer“
  • ·Key facts are only pulled from the text when they are actually in it — no invented figures, and no empty placeholder when there is nothing to show
  • ·Eckdaten werden nur aus dem Text gezogen, wenn sie wirklich drinstehen — keine erfundenen Werte und kein leerer Platzhalter, wenn nichts da ist
  • ·Both API keys stay server-side in Vercel functions and never reach the browser
  • ·Beide API-Schlüssel bleiben serverseitig in Vercel-Functions und erreichen den Browser nie
MyPocket: Gesprächsnotizen aus Audio-Aufnahmen mit Claude-Analyse
View live project Zum Live-Projekt
Back to top Zum Anfang

staycurious is my software studio in Vienna. I build apps that solve a real problem — mine, or yours.

staycurious ist mein Software-Studio in Wien. Ich baue Apps, die ein echtes Problem lösen — meins oder deins.

It didn't start with a business plan. It started with two annoyances. I wanted to know what finish time I could realistically aim for on race day — that became Run with Alva. I was tired of calling around to find out which tennis court was free — that became the MTV Hernals app. Both shipped, both get used. At some point this stopped being a side thing and became the work itself: staycurious.

Angefangen hat es nicht mit einem Businessplan, sondern mit zwei Ärgernissen. Ich wollte wissen, welche Zielzeit am Renntag realistisch ist — daraus wurde Run with Alva. Ich hatte es satt herumzutelefonieren, um herauszufinden, welcher Tennisplatz frei ist — daraus wurde die MTV-Hernals-App. Beides ist live, beides wird benutzt. Irgendwann war das kein Nebenbei mehr, sondern die Arbeit selbst: staycurious.

Before that: close to twenty years of product and platform work — regulated banking at Erste Bank, crypto operations at Bitpanda, enterprise software at Cisco. That background is why the studio builds the way it does. I start from the user's problem, the data model and the edge cases, not from a feature list. The difference rarely shows on the first screen. It almost always shows in the second month.

Davor: knapp zwanzig Jahre Produkt- und Plattformarbeit — reguliertes Banking bei der Erste Bank, Krypto-Operations bei Bitpanda, Enterprise-Software bei Cisco. Dieser Hintergrund ist der Grund, warum hier so gebaut wird, wie gebaut wird. Ich beginne beim Problem der Nutzer, beim Datenmodell und bei den Grenzfällen, nicht bei einer Feature-Liste. Der Unterschied zeigt sich selten am ersten Screen. Fast immer im zweiten Monat.

What decides whether something gets built: does it solve a problem someone actually has? Everything else is busywork. And if it does solve one, it may as well look good — software you open every day shapes that day. That isn't decoration, it's part of the use. So nothing gets built here that nobody uses — and nothing gets promised that the data can't carry. In Run with Alva every number traces back to a formula and a source, and where data is missing the app says so instead of guessing. Software with a point to it, in other words.

Woran sich entscheidet, ob etwas gebaut wird: Löst es ein Problem, das jemand wirklich hat? Alles andere ist Beschäftigung. Und wenn es das tut, darf es auch gut aussehen. Software, die man jeden Tag öffnet, prägt den Tag — das ist kein Beiwerk, das ist Teil des Nutzens. Deshalb entsteht hier nichts, das niemand benutzt — und nichts wird versprochen, was die Daten nicht hergeben. In Run with Alva lässt sich jede Zahl auf eine Formel und eine Quelle zurückführen, und wo Daten fehlen, sagt die App das, statt zu raten. Software mit Sinn und Nutzen, kurz gesagt.

And it goes fast. Digital products in days, not quarters — not because quality is negotiable, but because you only really understand a product once it runs. If you have an idea that feels like that: the fastest way to learn is to build it.

Und es geht schnell. Digitale Produkte in Tagen, nicht Quartalen — nicht weil Qualität verhandelbar wäre, sondern weil man ein Produkt erst versteht, wenn es läuft. Wenn du eine Idee hast, die sich so anfühlt: Der schnellste Weg zu lernen ist zu bauen.

The thread

Der rote Faden

Three things haven't changed in twenty years, and they decide how the studio works today: what I get stuck into, who I want to do it with, and when I move on.

Drei Dinge haben sich in zwanzig Jahren nicht geändert — und sie entscheiden bis heute, wie im Studio gearbeitet wird: woran ich mich festbeiße, mit wem ich das am liebsten tue, und wann ich weiterziehe.

01 ·The work

01 ·Die Arbeit

Complexity Komplexität Resonance Resonanz Building Bauen

Complex domains pull me in. Read until the mechanics make sense, then build something that proves I understood them.

Komplexe Domänen ziehen mich an. Lesen, bis die Mechanik Sinn ergibt — dann etwas bauen, das beweist, dass ich sie verstanden habe.

02 ·The people

02 ·Die Menschen

Eye level Augenhöhe Good leadership Guter Chef Mentoring Mentoring Team Team

Looking back, every one of my best memories at work is a relationship — meeting as equals, a good boss, mentoring someone. Not a product.

Rückblickend ist jede meiner besten Erinnerungen an die Arbeit eine Beziehung — Augenhöhe, ein guter Chef, jemanden zu begleiten. Kein Produkt.

03 ·The time

03 ·Die Zeit

Role changes Rollenwechsel Fast iteration Schnelle Iteration Not at setbacks Nicht beim Scheitern

I move when the novelty fades, not when things get hard. That same impatience is what makes the studio fast.

Ich wechsle, wenn die Neuheit verblasst — nicht, wenn es schwierig wird. Dieselbe Ungeduld steckt heute im Tempo des Studios.

swipewischen
Background Hintergrund
~20 years product & platform ~20 Jahre Produkt & Plattform Erste Bank · George Bitpanda Cisco MSc Innovation & Technology Management MSc Innovations- & Technologiemanagement
Built with Gebaut mit
Next.js Supabase Vercel Anthropic API
Studio Studio
Vienna, Austria Wien, Österreich German & English Deutsch & Englisch

Your idea. I'll build it.

Deine Idee. Ich baue sie.

New domains are the reason I do this. Telco processes, crypto operations, regulated banking — every time the field was foreign to me, and every time something got built. Tell me about your problem, even if I know nothing about it yet. People deserve software that solves their problem — useful, good-looking, and simple enough that nobody has to explain it.

Neue Domänen sind der Grund, warum ich das mache. Telco-Prozesse, Krypto-Operations, reguliertes Banking — jedes Mal war das Fachgebiet fremd und am Ende stand etwas Gebautes. Erzähl mir von deinem Problem, auch wenn ich davon noch nichts weiß. Menschen verdienen Software, die ihr Problem löst — sinnvoll, schön und einfach genug, dass man sie nicht erklären muss.

No briefing template, no discovery phase. A message with what you have in mind — that's all it takes.

Kein Briefing-Formular, keine Discovery-Phase. Eine Nachricht mit dem, was du dir vorstellst — mehr brauchst du nicht.