Software engineer · product systems · interaction

I design and engineer systems that make complex behavior understandable.

My practice moves between product design and software engineering. Projects begin with observation, questions, sketches and working experiments. Promising ideas develop through explicit models, accessibility, performance measurement and repeatable verification, so exploration and implementation remain part of the same process.

Selected work

Selected projects and working methods.

Each case study describes the problem, the design process, the experiments and the engineering decisions that shaped the result. The emphasis is on how observation becomes a model, how a prototype becomes evidence and how proven behavior becomes part of a durable system.

Portfolio mapPrimary studies

Slipmat · FireOne · Lemonade

Technical systems

Signal Broker · Defend · QMK / Vial / Halcyon

Operational systems

Booking · Inventory · Timeline

Public and knowledge systems

Kullaberg · Investigation Workbench

01 / Media systems

Slipmat

A playback-first multimedia client for owned and self-hosted media. Slipmat treats playback as an explicit system: one authoritative timeline, inspectable source and generation identity, a persistent Playback Rail, native audio processing, visualization and music analysis across Jellyfin and local media.

React 19Rust 2024Tauri v2JellyfinWASM analysis
Private · active product development Read case study
02 / Deterministic simulation

FireOne

A submarine tactics game about uncertainty, geometry and commitment. Its Rust simulation separates world state from player and AI knowledge, using deterministic ECS behavior and sonar-driven incomplete information to make perception part of the simulation.

RustBevy ECSRatatuiDeterminismSimulation AI
Private · playable pre-release Read case study
03 / Vehicle telemetry

Signal Broker

A vehicle-network development stack that exposes CAN, LIN and related buses through gRPC. Its browser client adds gRPC-Web and WebSocket access so live frames and decoded signals can be selected, inspected and charted interactively.

ElixirgRPCgRPC-WebCAN / LINVue
Read case study
04 / Procedural systems

Defend

A browser-based 3D tower-defense project combining procedural behavior, physics, AI, projectiles and generated sound. The current work uses the earlier playable build as evidence while the underlying systems are studied and modernized.

Babylon.jsTypeScriptPhysicsAIProcedural audio
Read case study
05 / Human input

QMK / Vial / Halcyon

An integrated split-keyboard system spanning QMK/Vial firmware, Halcyon TFT and encoder behavior, a typed Raw HID configuration contract, Vial host tooling and a visual Keyboard Atlas that models the physical Ferris geometry.

CQMK / VialRaw HIDWebHIDFerris Sweep
Public · active development Read case study
06 / Economic simulation

Lemonade

A reconstruction of the classic Lemonade Stand around pricing, inventory and advertising under changing weather and market conditions. Deterministic simulation allows visual, audio and economic experiments to be compared from the same starting state.

TypeScript 6Vite 8Three.jsWeb Audio
Public · active development Read case study
07 / Configurable platforms

Booking

A configurable booking platform that models appointments, capacity reservations and stays as related scheduling contracts, with auditability and supply-chain evidence designed into the workspace.

TypeScriptDomain modelingCodeQLCycloneDX
Public · active development Read case study
08 / Local-first operations

Inventory

A local-first inventory PWA for check-out, overdue accountability, offline work, backup and export, with a clear history of items and responsible entities.

PWALocal-firstOfflineBackup
Public · active development Read case study
09 / Information modeling

Timeline

A responsive workspace for events, ranges, categories and stories. It studies how factual chronology can support structured narratives while keeping source events explicit.

EventsRangesCategoriesStories
Public · active development Read case study

Additional studies

More applications, experiments and earlier work on GitHub

Professional thread

Design practice informs the way I engineer software.

My background connects graphic design, multimedia production and teaching with public-service software, large planning interfaces and systems engineering. I approach code as a design material: a medium for clarifying relationships, testing assumptions and shaping interaction.

Historical public material documents frontend application work for Länsstyrelsen Skåne and earlier leadership in design, multimedia and university teaching. Public LinkedIn material also documents close collaboration around the rebuilding of IKEA Kitchen Planner and IKEA Planner tooling using React, TypeScript and accessibility-focused frontend engineering.

Each stage added another instrument for inquiry: visual composition, interaction, user observation, state modeling, performance analysis, deterministic simulation and automated verification. Together they support a practice where intuition proposes directions and evidence develops them.

Read the professional experience narrative

About

I am interested in systems where structure and discovery reinforce each other.

A small interaction can reveal a physical model, a simulation can expose an unexpected relationship, and a well-structured tool can make complex information easier to examine and act upon.

I work across product thinking, visual and interaction design, and implementation. Minimal surfaces, careful hierarchy and working prototypes help make complex capability approachable.

Across media playback, games, vehicle telemetry, public-service software, knowledge graphs and programmable input, the method stays consistent: curiosity opens a direction, disciplined modeling gives it coherence and automation preserves time for further study.

Working principles

Discipline gives experimentation a durable form.

01

Begin with observation and a useful question.

Sketch, prototype, simulate and test on real hardware when the medium calls for it. Early experiments make relationships visible and allow a surprising result to guide the next question.

02

Turn experiments into evidence.

Instrument behavior with deterministic seeds, visual laboratories, accessibility checks, performance traces and explicit domain models. Comparable evidence gives creative decisions a shared basis.

03

Give proven ideas a stable form.

Types, tests, CI and documentation preserve established behavior. Automation carries routine verification so attention can return to observation, interpretation and new experiments.