Career summary / 1998–now

Highlights

Senior full-stack developer with nearly three decades of making computers do what they’re told. Started in the Netscape era when frames seemed like a good idea (they weren’t), survived the browser wars, and somehow still enjoy this.

I build features end-to-end, debug the production gremlins that make other developers suddenly remember they have meetings, and occasionally keep systems running at 2am when I’d really rather be unconscious.

Updated 2026-11-09

01 / CAPABILITIES

What I bring

01
End-to-end ownership

Taking features from vague requirements through UI, API, database, deployment, and monitoring — even the parts nobody wants to own.

02
Production debugging

Finding the gnarly bugs — race conditions, memory leaks, integration failures, the API call that only fails in production.

03
Legacy archaeology

Reading unfamiliar codebases, understanding what past developers were thinking, and improving it without breaking anything.

04
Infrastructure

Building CI/CD pipelines, containerized applications and observability so developers don't have to think about it — until it breaks.

02 / PRACTICE

How I work

Ask annoying questions

Turn vague asks into working software by asking "but what should happen if..." until it's actually been thought through.

Write tests

So future-me doesn't have to debug mysteries at 3am.

Review code thoughtfully

Catch bugs without being insufferable about formatting.

Ship things

Fix production issues with urgency; know when "good enough" beats "theoretically optimal."

Document everything. Keep the agents honest.

Architectural decisions, implementation plans and known work lived in a shared, version-controlled architect repository — the single source of truth for multiple coding agents. Decisions could be revised or revoked as the design evolved, keeping parallel feature work aligned and making changes traceable to their reasoning. Current paper trail: 175,000 words. Nearly two Hobbits.

Sell a process change

Introduced coding standards and QA at a small dev team. Pushback on both. We got there — mostly.

Hold ten priorities at once

A decade of multi-tenant clients, each with one feature that mattered most to them. Part of the job was working out what mattered most to everyone.

Argue for the "why"

A colleague once put it as "always good arguments backing his thoughts." I'll take it.

03 / PROOF

Delivered work

Three people, ten years of platform

Three of us co-founded GearsERP and built a B2B platform from scratch, demoed it to prospective clients and grew by word of mouth to 10+, every one in real-time two-way sync with Dynamics NAV, customer-specific pricing included.

On the CV →
Ordering that works without the internet

Tablet ordering for live trade fairs with no connectivity. Orders were captured offline and synced afterwards, with conflict resolution when several sales reps had edited the same customer.

On the CV →
Moved a 4,300-post blog, then made it lighter

Migrated ten years of WordPress content into a self-hosted editorial platform. The image archive shrank from 6.93 GB to 2.62 GB as AVIF on R2, at higher resolution, and content builds went from ~15 s / 1.75 GB to ~4 s / 850 MB.

Case study →

Side projects like drift and Pitwall live on /projects →

04 / STACK

Tech I actually use

Languages

  • Java
  • C#
  • TypeScript
  • JavaScript
  • SQL

Frontend

  • React
  • Vanilla JavaScript
  • HTML/CSS
  • Tailwind
  • Accessibility

Backend

  • Spring Boot
  • .NET
  • REST APIs
  • Integrations
  • Background jobs
  • Authentication
  • Database migrations

Operations

  • Docker/Podman
  • Kubernetes
  • Argo CD
  • CI/CD
  • Observability
  • Performance
  • Debugging

Origin story

Got a Commodore 64 at age ten and monopolized the family TV for the next eight years. Teens were BBSes and early Swedish internet gateways, building HTML for Lynx browsers. Turned professional in 1998, when Framfab hired me to make websites for IE4 — I'm still recovering, but these days browsers mostly agree on how CSS works. Mostly.