Experience
Senior backend developer and tech lead who builds robust, maintainable software. Cares about architecture that can evolve, teams that can sustain a pace, and code the next person can actually read. More than 13 years across healthcare, banking and insurance, and since 2023 as a consultant. Does open source and public speaking.
$ resume --list-formats
// job history
Consulting as a senior backend developer, architect and tech lead in client teams, across logistics, finance, public health and telecom.
- Architect on a greenfield logistics platform: a modular monolith built with Domain-Driven Design, event sourcing and event-driven integration, delivered by up to three teams
- Team lead and tech lead for the core credit-card systems at a large Nordic IT services company, where I set the test strategy, introduced contract testing and took part in the PCI audit
- Architect for a public health institute's move to a new Azure and Kubernetes platform
- Brought in at the end of a critical telecom infrastructure project, after its two original developers had left, to do a security audit, fix the remaining bugs and bring it to the finish line
- Developer on a restaurant ordering platform, building integrations with point-of-sale systems
- Mentored developers, gave internal talks and held technical interviews
Improved how the developers worked: architecture, test strategy, CI/CD and coaching.
- Tech lead across several teams, responsible for architecture, coaching and how the developers worked day to day
- Owned the test strategy and the CI/CD pipelines, including the move from TeamCity to GitHub Actions
- Introduced practices that stuck: post-incident reviews, Architecture Decision Records, self-updating dependencies and DORA metrics
- Built an initialiser that generates production-ready services, which became the foundation of every new application
- Replaced authorisation logic scattered across codebases with central policies and audit logging
- Led a project that geolocated more than 90% of the insured buildings in the UK, and built the reinsurance application used for risk analysis
- Took part in most major technology decisions during my time there
Maintained and created core solutions for major Nordic banks.
- Built and maintained core backend systems for multiple banks: reporting, integrations and a generic changelog
- Created automated integration testing that cut a week-long manual test of a bank's core systems to 15 minutes, and improved CI/CD pipelines
- Authored developer guidelines for a cleaner and more maintainable codebase
- Team lead for the team responsible for our PCI compliant systems
- Project architect for new banks joining the platform, responsible for the technical side from sale to delivery
- Worked closely with partners in India
Made electronic health record systems for the privatized healthcare sector in Norway. Started as a system developer and was eventually promoted to team lead.
- Responsible for the development of the core product, an electronic health record system
- Team lead: estimated, planned and followed up projects, and gathered requirements from customers
- Built integrations with payment terminals, accounting systems and video chat, and a system for migrating customers between vendors
- Worked closely with the business by planning and implementing new features
- Worked closely with an outsourcing team in Vietnam, and lived there for a few months to do it
// consultant projects
Greenfield logistics platform
10.2024 – presentA software company serving the largest hauliers in the Nordics
Architect · Developer
A transport and logistics system built from scratch: ordering transport, automatic route planning, trip administration and more. A modular monolith with about 290 API endpoints, built by up to three teams of 5–6 developers, under SLA requirements.
▸ show highlights▾ hide highlights
- Introduced Domain-Driven Design and a modular monolith so several teams can work in parallel in one codebase without the overhead of a distributed architecture.
- Designed event-driven integration with Azure Service Bus and event sourcing, plus a distributed cache in Hazelcast, and defined the standards for API design (OpenAPI) and automated testing with approval tests and TestContainers.
- Designed schema management and database migration in MongoDB, and the asynchronous integration with transactional outbox, idempotent consumers, retries and dead-letter queues.
- Technical contact for the customers, from requirements to integration design. Mentored the team, gave an internal talk on Domain-Driven Design and introduced ADRs.
- Largest single contributor: about a third of the code and pull requests, more than half of the database migrations and most of the technical documentation. Also builds frontend in React and TypeScript.
- Owns the solution in production, with GitOps deployment to Kubernetes through Azure DevOps and Helm, monitoring in Datadog, and a record of handling production incidents from debugging to data repair.
Location management for 5G sites
09.2024A telecom infrastructure company
Senior Developer
A system managing the locations of 5G stations around the country. It counts as critical infrastructure, and the data must stay in Norway, so security requirements were high. I was brought in at the end of the project: the two developers who built it had left, and the company needed someone to bring it to the finish line.
▸ show highlights▾ hide highlights
- Took over a codebase I hadn't written, after its two original developers had left, and brought it to the finish line.
- Did a security audit of the code, given the high security requirements of critical infrastructure.
- Fixed the few remaining bugs.
- Implemented a database migration.
Shared components on a new platform
05.2024 – 09.2024A Norwegian public health institute
Architect · System Developer
The institute was building a new platform on Azure and Kubernetes and owned shared components used across its solutions, including its national identity integration.
▸ show highlights▾ hide highlights
- As architect I assessed solution proposals and transition architectures for the move, identified critical dependencies to avoid tightly coupled designs, and was a sparring partner for their solution architects.
- As developer I worked on the shared components and on preparing for the migration, and on the link between the institute's solutions and health data.
Restaurant ordering platform
04.2024 – 06.2024A food-ordering software company
Developer
An ordering system for restaurants and other eateries that unifies web ordering, take-away, dine-in, catering, QR ordering and infection tracing, with integrations to several point-of-sale systems. I designed the architecture of the integrations and built them, plus the frontend needed to administer them.
Core credit-card systems
05.2023 – 04.2024A large Nordic IT services company
Team Lead · Tech Lead · Developer
The systems that run credit cards: transactions, interest calculation and account balances, under high transaction volumes with peaks towards Christmas. 10–12 developers, 30–40 microservices, many of the integrations SOAP services with XML.
▸ show highlights▾ hide highlights
- Team lead for the team owning the general ledger, bonus and customer data, and responsible for the company's PCI audit. Trained junior developers, communicated with stakeholders and planned quarterly goals, while still developing, pair programming and reviewing code.
- As tech lead I set the test strategy: contract testing for microservices, plus TestContainers, MockServer and OpenAPI compatibility checks.
- Started a regular workshop for developers across teams, led a small project introducing Domain-Driven Design and Clean Architecture, introduced a post-incident process and specified event-driven deletion routines.
- Standardised on transactional outbox, idempotent consumers and retries. Wrote Helm charts and deployed to OpenShift, with Grafana and Kibana for monitoring. Held technical interviews for new hires.
// open source
Gaseto
PASETO security tokens for Gleam.
A Gleam implementation of PASETO (Platform-Agnostic SEcurity TOkens), a safer alternative to JWT. Supports v3 and v4 local and public tokens, is verified against the official test vectors, and comes with gaseto_http for using it over HTTP.
No Meat Proxy
Protest site against anti-social behaviour in the LLM era.
A simple website showcasing how to (not) use AI when working with other people.
Surtoget
Tracking chronic delays on Norwegian trains.
A public tool that exposes systemic delay patterns in the Norwegian rail network through open data — because the official statistics don't tell the full story.
Brunost
A programming language with Norwegian syntax.
A programming language built for Norwegian speakers — using Nynorsk keywords (forKvart, prøv, gjevTilbake) so code reads naturally in the language you think in. Built in Zig, it compiles to native binaries and WebAssembly.
Bygg
A Gleam project scaffolding tool
Getting started with Gleam is easy. Getting something production ready is less so, regardless of the language. Bygg aims to help developers getting started by generating projects with sensible defaults already configured and ready to go.
HTTP Mock Server for Gleam
A mock server for Gleam supporting Erlang and JavaScript targets
A WireMock-style HTTP mock server for Gleam integration tests. Start a real HTTP server in your test, tell it what to respond to, make requests against it, and verify what was called — on both Erlang and JavaScript targets.
toUUID
A small library that creates human-readable and deterministic UUIDs for testing purposes.