Strava/Runkeeper ägde sex år av mitt liv
GPS-spår. Tider. Foton. Varje morgonrunda, varje halvmara, varje gång jag knogade längs samma sträcka i regnet. Det är inte fitness-data — det är jag, i koordinater. På deras servrar, under deras villkor.
Strava ändrade API-villkoren 2018 och stängde av ett gäng tredjepartsappar över en natt. Runkeeper köptes av ASICS. Saker händer.
Jag tillbringade påsken med att ta hem mitt data.
Vad ett påskpyssel kan åstadkomma
Resultatet är halfthemarathon — en självhostad webbapp i SvelteKit med SQLite och Docker som samlar sex år av löpdata med foton, kartor, splittar, heatmaps och ruttanalys med personbästa per runda. Och htmitub-recorder; en Android-app
i Kotlin som spelar in GPS, pausar, synkar i bakgrunden och genererar svenska löptitlar (OK, detta var onödigt men rätt kul) via LLM.
All data på min server. Ingenting kvar i Runkeepers eller Stravas moln.
Hur lång tid tog det? Ett par dagar. Jag har aldrig skrivit Kotlin i mitt liv.
Vibe coding är inte ett skällsord
Det är det som är poängen. Tröskeln för att bygga sin egen grej har aldrig varit lägre. Claude Code låter dig beskriva vad du vill ha och iterera mot det. Du behöver fortfarande förstå vad du gör. Du kan inte vibe code dig förbi ett arkitekturellt misstag, men du behöver inte ha Kotlin-ekosystemet i huvudet för att producera en fungerande app.
Den uppenbara invändningen: Claude Code är en molntjänst. Anthropics servrar processar koden. Det är en legitim observation.
Men koden är ett medel. Datat är målet.
Claude Code-sessionen tar slut. Koden,men framförallt datan, är kvar hos mig. Anthropic har inte mitt GPS-spår från landet i morse. Runkeeper hade det.
Det här är offensiv interoperabilitet
Du använder Stravas webhook-API och Runkeepers exportformat, bygger en pipeline som tar ditt data hem, och stänger sedan beroendet. På dina villkor, inte deras.
Vi är dåliga på det. Vi installerar appen, accepterar villkoren, och tänker inte mer på det förrän företaget säljs, API:et stängs, eller prenumerationspriset dubblas.
Påskpysslet tog ett par dagar. Sex år av data är nu på min server.
Det är vad det kostar att äga sitt eget liv.
Ok, vi behöver prata lite om säkerhet också
Hur säker är min app? Och min websajt? Helt ärligt, det är inte Fort Knox. Det är rimligt säkert. Jag må lida av hybris av och till men att jag skulle bli utsatt för en riktad attack för att min löpardata är SÅÅÅ intressant tror jag inte. Säkerheten i detta är att det är så begränsat. Appen pratar med min server. Alla session tokens delas ut av mig. Det enda jag behöver vara rimligt säker på att är att jag inte felkonfat min Docker så det är orimligt lätt att göra en escape.
Det jag får ut av detta som sagt är att jag kontrollerar hur jag hanterar min data, fortfarande ganska öppet på webben, men nu kan inte nån annan appjävel sälja det och tjäna pengar på mig. Och allt ligger i öppna Github-repos. Information wants to be free, and all that jazz.