Mjukvaruingenjör · produktsystem · interaktion

Jag gör komplexa system begripliga, taktila och värda att utforska.

Jag rör mig mellan produktdesign och teknik eftersom det mest intressanta arbetet sällan tillhör bara en disciplin. Jag börjar gärna med en fråga, en skiss, en prototyp eller ett märkligt beteende som är värt att förstå, och ger sedan det lovande tillräcklig struktur — tydliga modeller, tester, tillgänglighet, prestandabudgetar och repeterbara experiment — för att det ska tåla mötet med en verklig produkt.

Valda projekt

Projekt som visar både idén och metoden.

Fallstudierna handlar mindre om en lista av ramverk och mer om hur en produkt växte fram: vad som var värt att undra över, vad som provades, vilken evidens som ändrade riktning och vilka upptäckter som blev bestående design- eller ingenjörsregler.

PortföljöversiktFlaggskeppssystem

Slipmat · FireOne · Lemonade

Särpräglade tekniska produkter

Signal Broker · Defend · QMK / Vial

Operativa produktsystem

Booking · Inventory · Timeline

Offentlig service och kunskap

Kullaberg · Investigation Workbench · Workstation

01 / Mediesystem

Slipmat

En medieklient för egen och självhostad media där uppspelningen står i centrum. Slipmat behandlar uppspelning som ett uttryckligt system: en auktoritativ tidslinje, inspekterbar käll- och generationsidentitet, en beständig Playback Rail, inbyggd ljudbearbetning, rik visualisering och djup musikanalys för både Jellyfin och lokala medier.

React 19Rust 2024Tauri v2JellyfinWASM analysis
Privat · aktiv produktutveckling Läs fallstudien
02 / Deterministisk simulering

FireOne

Ett ubåtstaktiskt spel om osäkerhet, geometri och åtagande. Den auktoritativa simuleringen i Rust skiljer världens sanning från vad spelaren och AI:n får känna till, med deterministiskt ECS-beteende, sonardriven ofullständig information och utbytbara presentationsklienter.

RustBevy ECSRatatuiDeterminismSimulation AI
Privat · spelbar förhandsversion Läs fallstudien
03 / Fordons-telemetri

Signal Broker

Arbete kring en utvecklingsplattform för fordonsnätverk som exponerar CAN, LIN och relaterade bussar via gRPC i stället för att binda verktygen till ett språk eller en transport. Webbläsarklienten lägger till gRPC-Web och WebSocket så att live-ramar och avkodade signaler kan väljas, inspekteras och visualiseras interaktivt.

ElixirgRPCgRPC-WebCAN / LINVue
Läs fallstudien
04 / Utvecklingsmiljö

Arbetsstationssystem

Mina dotfiles är en reproducerbar plattformsöverskridande arbetsstation, inte en mapp med kopierade konfigurationer: maskinmedvetna profiler, deklarativa paket, tydliga GNU Stow-gränser, torrkörningar, rullande säkerhetskopior, livscykel-hooks, CI-validering och en interaktiv installerare i Rust för macOS, Linux och Termux.

Rust TUIGNU StowmacOS + LinuxTermuxGitHub Actions
Privat · daglig infrastruktur Läs fallstudien
05 / Procedurala system

Defend

Ett plattformsöverskridande 3D-projekt inom tower defense som kombinerar proceduralt beteende, fysik, AI, projektiler och genererat ljud i webbläsaren. Det är ett fortlöpande laboratorium för simulering, prestanda och system som måste förbli begripliga samtidigt som de blir mer dynamiska.

Babylon.jsTypeScriptPhysicsAIProcedural audio
Läs fallstudien
06 / Mänsklig inmatning

QMK-miljö

Anpassad firmware för delat tangentbord där lager, encoders, Alternate Repeat och programmerbar inmatning behandlas som deterministiska interaktionskontrakt snarare än tillfälliga tangentmappningar.

CQMKFirmwareErgonomics
Läs fallstudien
07 / Firmwarekonfiguration

Vial / Halcyon Control Center

Ett samordnat system av firmware, HID-protokoll och webbkonfiguration som exponerar TFT-inställningar, telemetri, RGB-profiler och inmatningssemantik för Halcyon Ferris utan att försvaga Vials standardkompatibilitet.

VialQMKRaw HIDWeb tooling
Publikt · aktiv utveckling Läs fallstudien
08 / Ekonomisk simulering

Lemonade

En modern rekonstruktion av klassiska Lemonade Stand kring ett litet antal betydelsefulla beslut: pris, lager och reklam under skiftande väder och marknadsförhållanden, där simuleringen gradvis visar mer av den ekonomiska strukturen.

TypeScript 6Vite 8Three.jsWeb Audio
Publikt · aktiv återuppbyggnad Läs fallstudien
09 / Konfigurerbara plattformar

Booking

En konfigurerbar bokningsplattform som modellerar bokade tider, kapacitetsreservationer och vistelser som olika schemaläggningskontrakt, med spårbarhet och leveranskedjebevis inbyggda i arbetsytan.

TypeScriptDomain modelingCodeQLCycloneDX
Publikt · aktiv utveckling Läs fallstudien
10 / Local-first-drift

Inventory

En förstärkt local-first PWA för utlåning, ansvar för försenade artiklar, offlinearbete, säkerhetskopiering/export och tydlig entitetshistorik utan att en server måste finnas tillgänglig för att systemet ska vara användbart.

PWALocal-firstOfflineBackup
Publikt · aktiv utveckling Läs fallstudien
11 / Informationsmodellering

Timeline

En responsiv arbetsyta för händelser, intervall, kategorier och berättelser, utformad för att göra kronologi till strukturerade narrativ i stället för en platt lista med datum.

EventsRangesCategoriesStories
Publikt · aktiv utveckling Läs fallstudien

Ytterligare system

Fler applikationer, experiment och äldre projekt på GitHub

Yrkeslinje

Designdjup blev ingenjörsdjup utan att ersätta designinstinkten.

Min bakgrund går från grafisk design, multimediaproduktion och undervisning till offentlig programvara, stora planeringsgränssnitt och systemutveckling. Jag behandlar fortfarande kod som ett designmaterial: något som kan förtydliga en idé, visa dess gränser och få en interaktion att kännas självklar snarare än bara fungerande.

Historiskt offentligt material dokumenterar frontendarbete för Länsstyrelsen Skåne och tidigare ledarskap inom design, multimedia och universitetsundervisning. Offentligt material på LinkedIn dokumenterar också nära samarbete kring ombyggnaden av IKEA Kitchen Planner och IKEAs Planner-verktyg med React, TypeScript och tillgänglighetsfokuserad frontendutveckling.

Utvecklingen betyder mer för mig än en tidslinje över ramverk. Varje steg gav ytterligare ett sätt att pröva en idé: visuell komposition, interaktion, användarobservation, tillståndsmodellering, prestanda, deterministisk simulering och automatiserad verifiering. Målet är inte att ersätta intuition med process, utan att ge intuitionen bättre instrument.

Läs berättelsen om yrkeserfarenheten

Om

Jag är intresserad av system som kan överraska utan att bli godtyckliga.

Arbetet blir intressant när ett litet beslut ändrar en fysisk modell, ett dolt tillstånd blir synligt, en simulering lär ut något oväntat eller ett verktyg ger någon lite större handlingsutrymme än tidigare.

Jag rör mig obehindrat mellan produkttänkande, visuell och interaktionsdesign och implementation. Jag tycker om minimala ytor med djup kapacitet, lekfulla prototyper som avslöjar en bättre riktning och system vars beteende till slut kan förklaras exakt.

Mediet skiftar — medieuppspelning, spel, fordonsdata, offentlig programvara, utvecklarmiljöer, kunskapsgrafer eller programmerbar inmatning — men mönstret består: nyfikenhet öppnar utrymmet, disciplinerad modellering håller resultatet samman och automation skyddar tillräckligt med tid för fortsatt experimenterande.

Arbetsprinciper

En disciplinerad process ska skapa mer utrymme för förundran, inte mindre.

01

Börja med den intressanta frågan.

Skissa den, bygg en prototyp, simulera den, kör den på riktig hårdvara eller pressa den medvetet för långt. Tidigt arbete ska göra upptäckter tillräckligt billiga för att ett överraskande resultat faktiskt kan ändra planen.

02

Gör experiment till evidens.

Instrumentera beteendet. Använd deterministiska seeds, visuella laboratorier, tillgänglighetskontroller, prestandaspår och tydliga domänmodeller så att beslut kan jämföras i stället för att försvaras ur minnet.

03

Automatisera det som har förtjänat att bli bestående.

När en idé har bevisat sitt värde kodas invarianten i typer, tester, CI och dokumentation. Maskineriet ska förhindra regressioner och repetitiv granskning — och lämna mer mänsklig uppmärksamhet åt nästa kreativa problem.