Software engineer and tech lead. Independent through Pear Programming AB, currently leading the Platform team at Bitwarden, across its web, browser and desktop clients and the Rust SDK that also powers mobile.
Tech lead and engineer, both at once. I don't stay in one lane: I follow problems across the stack and fix them where I find them, mostly in the plumbing between things: the SDK's core runtime, language bindings, generated API clients and repo structure. And I lead: aligning teams on architecture and ownership, and sharing what I learn so the whole team moves faster.
“My main goal and strength is the ability to understand the underlying nature of any problem.”
Client platform & architectureShared foundations for large, multi-client TypeScript codebases: repo structure, module boundaries and team ownership. A platform product teams can build on without thinking about it.
Rust & cross-platform integrationThe core runtime every SDK developer builds on, and the path from there into web, desktop and mobile clients: language bindings, IPC, and API clients generated straight from the server's spec.
Hands-on technical leadershipLeading from the keyboard and across teams: defining the problem, prototyping the options, aligning people on architecture and ownership, and sharing knowledge so the team moves faster. The company name is not an accident.
## where i work
web app
browser ext.
desktop
mobile
shared typescript platform
rust sdk · core platform, bindings & ipc
generated api bindings
server apis
Bitwarden is zero-knowledge: the server never sees your data, so the real work happens in the clients.
2025Rust SDK integration & IPC· the shared Rust core in the clients
2024Upstream to passkey-rs· contributions to the open-source passkey crate
2023Led passkeys in the clients· from first definition to shipped feature
jun 2022Joined as software engineer· through Pear Programming AB. First stop: the Component Library
$ git log --oneline --before=2022
2022Advinans· software engineer
Designed and built a complete feature end to end: purchasing and reselling SF cinema tickets for companies.
2020 – 2022Prisjakt· senior developer via tretton37
Part of a task force solving important cross-domain challenges.
Set up a new B2B department, coordinating with existing departments to get to market quickly, following lean startup.
Drove the team-topology work for owning a core platform service.
Microservices on GCP: Cloud Functions, Cloud Run and Kubernetes. Python first, then TypeScript as the primary language.
2017 – 2020Volvo Trucks· lead developer via Combitech
Architectural design and implementation in an agile team, in close collaboration with the project's senior architect.
Kept architectural artifacts in step with the product domain, and used them to plan work by comparing the ideal implementation with the actual one.
Tech lead: kept in sync with other teams, supported product owners as domain expert, and made sure every team member could take responsibility for the product.
ASP.NET Core and Angular, deployed to a Kubernetes-based OpenShift cluster.
2012 – 2017M.Sc. Computer Science, LTH· Lund University
Thesis at Combain Mobile: “A Platform for Indoor Localisation, Mapping, and Data Collection using an Autonomous Vehicle”. Built the MVP on the Robot Operating System (ROS), with a web interface for operating the robot.
Alongside studies: full-stack web development at Combain Mobile, Lunicore Studentkonsult and We Know IT.
Commits are signed with the SSH key (ssh-keygen -Y verify checks any signature); the OpenPGP key is the one I sign with at work. To send me something privately, encrypt to either: curl -sO https://pearprogramming.se/signing-key.pub && age -R signing-key.pub -o secret.age file or the OpenPGP key at /key.asc.