klättringen
Erfarenhet
Scrolla uppför berget. Varje markering är ett steg från baslägret till där jag står idag.
-
Järnhandel
24 år inom järnhandeln, mestadels i familjeföretaget. Inredning, renovering, verktyg, byggvaror — varje kategori, varje typ av kund. Den sortens jobb som lär dig vad användare faktiskt behöver innan du sätter en skärm mellan dig och dem.
-
Kasvu Labs Oy
Första betalda programmeringsjobbet. Node.js-backend, React-frontend, arbete med stora mängder öppen data. Full-stack-utveckling, UI-design, databashantering på Azure, produktunderhåll.
-
Att bli pappa
Tog ett steg tillbaka från heltidsarbete för familjen. Personliga projekt fortsatte i bakgrunden.
-
AI-nativa arbetsflöden
Agentisk, AI-assisterad utveckling som en versionerad disciplin. Anpassade Claude Code-skills checkas in i repot som produktionsartefakter — varje skill lär agenten ett projektspecifikt recept (lägg till en fiende, släpp en databasmigration, granska sparpipelinen) så att den går rakt på sak istället för att grepa runt vid $X/token. Parprogrammering med parallella delagenter över oberoende delar, sedan syntes av resultaten.
Skillsen är versionshanterade, granskade (drift mellan en skill och koden den refererar till är en verklig kategori av buggar — drift fångas och åtgärdas), och behandlas som produktionsartefakter. Uppskattad besparing enbart i Spacepotatis: ~3,13 miljoner token per år. Snabbare leverans utan att sänka ribban.
Arbetsflödet har egna verktyg: claude-continue håller Claude Codes 5-timmarsfönster rygg mot rygg genom att läsa det aktiva fönstrets återställningstid och återuppta pausade sessioner i samma stund som nästa fönster öppnas — så att en lång autonom körning inte stannar av i gapet mellan fönster.
-
2026 — byggåret
I juni 2026: nio projekt levererade solo på tolv månader — full-stack-webbappar, ett skrivbordsverktyg och en ReadLog-portning som körs live på Azure. Riktiga användare, riktig drift, fullt ägarskap från schema till deploy.
-
Triage före omdesign
När save-korruption slog till i Spacepotatis i maj 2026: serversideguard samma dag, audit-tabell dagen efter, arkitektonisk fix först efter en vecka av riktig data. Mitigera → observera → arkitektur.
-
AI-flöde som incheckad kod
Spacepotatis levererar en uppsättning Claude Code-skills i repot — kodgranskade och auditerade. ~3,13M token sparat under första året.
Metod -
Ingen verktygsinlåsning
AudiobookMaker kör tre TTS-motorer under en pipeline — Edge-TTS, Piper, Chatterbox. Användaren väljer per bok.
-
Mutationstestning > coverage
HRM kör Stryker på varje PR. 91,9 % radtäckning betyder att raderna kördes; mutationspoäng betyder att assertions faktiskt fångar buggar.
-
Fixa uppströms, inte lokalt
Diagnostiserade en minnesläcka djupt i Chatterboxs inferensbana; skickade två PR:ar uppströms till resemble-ai/chatterbox (#505, #510), båda öppna och bumpade av andra bidragsgivare.
-
Solo full-stack, inga köer
SQL, app-kod, CI, Vercel- och Azure-deployer, signerade Windows-installerare via GitHub Releases, OpenTelemetry — ägt från ände till ände över alla nio projekt.
-
-
Mätte AI-arbetsflödet
Efter ett år av att hävda att arbetsflödet lönade sig körde jag A/B. Varje anpassad Claude Code-skill mätt mot sig själv kall — samma uppgift, delagent på, delagent av — på Sonnet, Opus och Haiku. 34 skills, 33 kalibrerade. Aggregerad besparing: +17 %, ~327K token över portföljen.
Det publicerade registret inkluderar skillsen som kostade MER än att gå kall. De är inte misslyckanden — de bär stringens som den kalla armen hoppade över (auditgrundlighet, protokolldisciplin, spec-djup). Värdet är fullständighet, inte komprimering. PDF:en går att ladda ner från contact-terminalen; varje siffra är spårbar till ett riktigt transkript.
-
Rust, och att kontrollera mitt eget arbete
Ett nytt språk och ett hårdare beviskrav kom samtidigt. Språket är Rust, plockat upp för en lösenordshanterare där hela den kryptografiska ytan bor i en enda crate som kompilerar både nativt och till WebAssembly. Kommandoradsvalvet, synkroniseringsservern, klienten i webbläsaren och Chrome-tillägget kör alla samma kod, i stället för fyra kopior som tyst glider isär.
Vanan var att vägra ta mitt eget ord för något. Parametrarna för nyckelderivering, nonce-strategin, vad den autentiserade krypterade texten är bunden till: var och en är ett nedskrivet beslut med en hotmodell bifogad, inklusive en tydlig lista över vad designen inte skyddar mot. Repot bär egna granskare för just den sista punkten: en går igenom besluten mot koden, en annan håller de uttalade säkerhetspåståendena mot vad kryptografin faktiskt gör. Ett påstående som ingen kontrollerar igen är bara en kommentar.
-
En crate, fyra klienter
Argon2id på 256 MiB och tre pass, XChaCha20-Poly1305 med en färsk nonce per post, och varje post bunden till sitt eget id och sin egen tidsstämpel så att två poster inte kan bytas ut under dig. Huvudlösenordet lämnar aldrig klienten, och synkroniseringsservern håller alltid bara krypterad text. Att låsa upp kostar omkring 430 ms, vilket är funktionen snarare än regressionen.
-
Trettio rundor, blint
Valet av finsk språkmodell för den lokala stacken avgjordes genom att rangordna trettio finska svar blint, bedömda av en modersmålstalare som inte kunde se vilken modell som skrev vad. Poro-2-8B placerade sig först i 26 av 30 och gick till produktion på det resultatet. Ett andra projekt körde samma siffror och avstod, eftersom rätt val beror på hur utdatan används. Att välja åt något håll på känsla hade gått snabbare och hade inte bevisat något.
Läs studien -
Oftast är buggen min
När svaren började koppla fel datum till min egen forskning var den bekväma förklaringen att en liten modell hallucinerade. Det gjorde den inte. Datumet föll bort vid prompt-gränsen innan modellen någonsin såg det. Tre tidigare försök att fixa det på modellsidan är nedskrivna som återvändsgränder, så nästa person som tittar inte behöver lägga ner en vecka som jag gjorde.
-
En mätning som inte ändrade något
En flerspråkig embedder såg ut som den självklara uppgraderingen för finsk retrieval. Uppmätt sida vid sida fick den redan driftsatta uppsättningen 0,810 mot kandidatens 0,762, så inget skeppades. Experimentet som talar emot din plan är lika mycket värt som det som bekräftar den, förutsatt att du skriver ner det ändå.
-
-
Blickar uppåt
Tillgänglig nu. Öppen för ambitiösa full-stack-roller där både hantverk och tempo räknas. Nio solo-levererade projekt i år — bevis på båda.