Skip to content
Skip to content
Skip to content

About

Eight years of product work for fintech and developer tool teams, from a desk in Oslo. Most of it is React and TypeScript. All of it is measured.

years
8
products shipped
46
teams joined
6

About

Eight years of product work for fintech and developer tool teams, from a desk in Oslo. Most of it is React and TypeScript. All of it is measured.

years
8
products shipped
46
teams joined
6

About

Eight years of product work for fintech and developer tool teams, from a desk in Oslo. Most of it is React and TypeScript. All of it is measured.

years
8
products shipped
46
teams joined
6

The story

  1. 2018 to 2019

    I started with the build script nobody wanted.

    My first job was email templates and landing pages in Bergen. The build took four minutes, so I fixed it at night. That is how I found out I liked the part of the work that makes everyone else faster.

  2. 2019 to 2023

    Then three product teams, each one closer to the user.

    Sensor charts on the GPU at Tidewater, one console in place of forty internal tools at Ledgerline, the merchant dashboard at Kestrel Pay. Every time, the number that mattered was how long a person waited.

  3. 2023 to now

    Now I work on my own, one project at a time.

    I join a team for six to twelve weeks, agree on the number we are moving, and ship against it every Friday. When I leave, the next developer gets a written handover and code they can read.

A dark desk at night with a closed laptop, a notebook and a lamp-lit plant
Soren Hale · Oslo

Principles

None of them are original. All of them were learned by getting it wrong first.

  1. Measure first

    No rewrite starts before there is a number for how slow it is today. Otherwise nobody can tell when it is done.

  2. Ship on Friday

    A real deploy every week, however small. A demo that runs on my laptop is not progress.

  3. Keyboard and screen reader, always

    Accessibility is part of the first build. Added at the end, it costs three times as much and still feels bolted on.

  4. Less JavaScript

    The fastest code is the code that never reaches the phone. HTML and CSS get the first try.

  5. Write it down

    Decisions go in the repository, next to the code they explain. Chat threads are where reasons go to disappear.

  6. Say no early

    If a deadline or a tool is wrong for the job, you hear it in week one, with the reason.

NowUpdated October 2026Building transactions v3 for Kestrel Pay, and booking one new project from November.See what I am doing now

The story

  1. 2018 to 2019

    I started with the build script nobody wanted.

    My first job was email templates and landing pages in Bergen. The build took four minutes, so I fixed it at night. That is how I found out I liked the part of the work that makes everyone else faster.

  2. 2019 to 2023

    Then three product teams, each one closer to the user.

    Sensor charts on the GPU at Tidewater, one console in place of forty internal tools at Ledgerline, the merchant dashboard at Kestrel Pay. Every time, the number that mattered was how long a person waited.

  3. 2023 to now

    Now I work on my own, one project at a time.

    I join a team for six to twelve weeks, agree on the number we are moving, and ship against it every Friday. When I leave, the next developer gets a written handover and code they can read.

A dark desk at night with a closed laptop, a notebook and a lamp-lit plant
Soren Hale · Oslo

Principles

None of them are original. All of them were learned by getting it wrong first.

  1. Measure first

    No rewrite starts before there is a number for how slow it is today. Otherwise nobody can tell when it is done.

  2. Ship on Friday

    A real deploy every week, however small. A demo that runs on my laptop is not progress.

  3. Keyboard and screen reader, always

    Accessibility is part of the first build. Added at the end, it costs three times as much and still feels bolted on.

  4. Less JavaScript

    The fastest code is the code that never reaches the phone. HTML and CSS get the first try.

  5. Write it down

    Decisions go in the repository, next to the code they explain. Chat threads are where reasons go to disappear.

  6. Say no early

    If a deadline or a tool is wrong for the job, you hear it in week one, with the reason.

NowUpdated October 2026Building transactions v3 for Kestrel Pay, and booking one new project from November.See what I am doing now

The story

  1. 2018 to 2019

    I started with the build script nobody wanted.

    My first job was email templates and landing pages in Bergen. The build took four minutes, so I fixed it at night. That is how I found out I liked the part of the work that makes everyone else faster.

  2. 2019 to 2023

    Then three product teams, each one closer to the user.

    Sensor charts on the GPU at Tidewater, one console in place of forty internal tools at Ledgerline, the merchant dashboard at Kestrel Pay. Every time, the number that mattered was how long a person waited.

  3. 2023 to now

    Now I work on my own, one project at a time.

    I join a team for six to twelve weeks, agree on the number we are moving, and ship against it every Friday. When I leave, the next developer gets a written handover and code they can read.

A dark desk at night with a closed laptop, a notebook and a lamp-lit plant
Soren Hale · Oslo

Principles

None of them are original. All of them were learned by getting it wrong first.

  1. Measure first

    No rewrite starts before there is a number for how slow it is today. Otherwise nobody can tell when it is done.

  2. Ship on Friday

    A real deploy every week, however small. A demo that runs on my laptop is not progress.

  3. Keyboard and screen reader, always

    Accessibility is part of the first build. Added at the end, it costs three times as much and still feels bolted on.

  4. Less JavaScript

    The fastest code is the code that never reaches the phone. HTML and CSS get the first try.

  5. Write it down

    Decisions go in the repository, next to the code they explain. Chat threads are where reasons go to disappear.

  6. Say no early

    If a deadline or a tool is wrong for the job, you hear it in week one, with the reason.

NowUpdated October 2026Building transactions v3 for Kestrel Pay, and booking one new project from November.See what I am doing now

Code review

The people who merged the work, in their own words.

reviews/clients.md5 of 5 approved
  1. Ingrid SolvangVP Engineering · Northwind
    We had been tuning the backend for a year. Soren found two seconds in the browser in his first week, and checkout conversion has not been below the old record since.
    Approved
  2. Marcus OyelaranEngineering manager · Kestrel Pay
    He writes the kind of pull request you learn from. Our juniors started copying his commit messages, then his tests, then his habit of measuring before arguing.
    Approved
  3. Hana TakedaHead of design · Halden
    The design system shipped on time, and more to the point, people use it. Soren spent as much effort on the teams as on the components.
    Approved
  4. Jonas LindqvistFounder · Loopdocs
    I gave him a vague brief and a hard date. I got a plan in two days, a working build every Friday and no surprises at the end.
    Approved
  5. Amara NwosuProduct lead · Tidewater
    Our analysts stopped exporting data to look at it. A million points, sixty frames a second, and it still works with a keyboard.
    Approved

Code review

The people who merged the work, in their own words.

reviews/clients.md5 of 5 approved
  1. Ingrid SolvangVP Engineering · Northwind
    We had been tuning the backend for a year. Soren found two seconds in the browser in his first week, and checkout conversion has not been below the old record since.
    Approved
  2. Marcus OyelaranEngineering manager · Kestrel Pay
    He writes the kind of pull request you learn from. Our juniors started copying his commit messages, then his tests, then his habit of measuring before arguing.
    Approved
  3. Hana TakedaHead of design · Halden
    The design system shipped on time, and more to the point, people use it. Soren spent as much effort on the teams as on the components.
    Approved
  4. Jonas LindqvistFounder · Loopdocs
    I gave him a vague brief and a hard date. I got a plan in two days, a working build every Friday and no surprises at the end.
    Approved
  5. Amara NwosuProduct lead · Tidewater
    Our analysts stopped exporting data to look at it. A million points, sixty frames a second, and it still works with a keyboard.
    Approved

Code review

The people who merged the work, in their own words.

reviews/clients.md5 of 5 approved
  1. Ingrid SolvangVP Engineering · Northwind
    We had been tuning the backend for a year. Soren found two seconds in the browser in his first week, and checkout conversion has not been below the old record since.
    Approved
  2. Marcus OyelaranEngineering manager · Kestrel Pay
    He writes the kind of pull request you learn from. Our juniors started copying his commit messages, then his tests, then his habit of measuring before arguing.
    Approved
  3. Hana TakedaHead of design · Halden
    The design system shipped on time, and more to the point, people use it. Soren spent as much effort on the teams as on the components.
    Approved
  4. Jonas LindqvistFounder · Loopdocs
    I gave him a vague brief and a hard date. I got a plan in two days, a working build every Friday and no surprises at the end.
    Approved
  5. Amara NwosuProduct lead · Tidewater
    Our analysts stopped exporting data to look at it. A million points, sixty frames a second, and it still works with a keyboard.
    Approved

Start a project

Three quick picks so the first reply is useful. You finish the message on the contact page.

What do you need?

Rough budget

brief.tsdraft, not sent

Brief so far: nothing picked yet

or write to hello@sorenhale.dev

Nothing is sent from this page. Your picks are kept in this browser tab and wait for you on the contact form.

Start a project

Three quick picks so the first reply is useful. You finish the message on the contact page.

What do you need?

Rough budget

brief.tsdraft, not sent

Brief so far: nothing picked yet

or write to hello@sorenhale.dev

Nothing is sent from this page. Your picks are kept in this browser tab and wait for you on the contact form.

Start a project

Three quick picks so the first reply is useful. You finish the message on the contact page.

What do you need?

Rough budget

brief.tsdraft, not sent

Brief so far: nothing picked yet

or write to hello@sorenhale.dev

Nothing is sent from this page. Your picks are kept in this browser tab and wait for you on the contact form.

Footer

Local time, Oslo

Footer

Local time, Oslo

Footer

Local time, Oslo

Create a free website with Framer, the website builder loved by startups, designers and agencies.