>soren hale — frontend developer
// About
I build interfaces that answer at once.
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
I build interfaces that answer at once.
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
I build interfaces that answer at once.
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
Eight years, in three parts.
012018 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.
022019 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.
032023 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.

// Principles
Six rules I work by.
None of them are original. All of them were learned by getting it wrong first.
- 01
Measure first
No rewrite starts before there is a number for how slow it is today. Otherwise nobody can tell when it is done.
- 02
Ship on Friday
A real deploy every week, however small. A demo that runs on my laptop is not progress.
- 03
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.
- 04
Less JavaScript
The fastest code is the code that never reaches the phone. HTML and CSS get the first try.
- 05
Write it down
Decisions go in the repository, next to the code they explain. Chat threads are where reasons go to disappear.
- 06
Say no early
If a deadline or a tool is wrong for the job, you hear it in week one, with the reason.
// The story
Eight years, in three parts.
012018 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.
022019 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.
032023 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.

// Principles
Six rules I work by.
None of them are original. All of them were learned by getting it wrong first.
- 01
Measure first
No rewrite starts before there is a number for how slow it is today. Otherwise nobody can tell when it is done.
- 02
Ship on Friday
A real deploy every week, however small. A demo that runs on my laptop is not progress.
- 03
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.
- 04
Less JavaScript
The fastest code is the code that never reaches the phone. HTML and CSS get the first try.
- 05
Write it down
Decisions go in the repository, next to the code they explain. Chat threads are where reasons go to disappear.
- 06
Say no early
If a deadline or a tool is wrong for the job, you hear it in week one, with the reason.
// The story
Eight years, in three parts.
012018 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.
022019 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.
032023 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.

// Principles
Six rules I work by.
None of them are original. All of them were learned by getting it wrong first.
- 01
Measure first
No rewrite starts before there is a number for how slow it is today. Otherwise nobody can tell when it is done.
- 02
Ship on Friday
A real deploy every week, however small. A demo that runs on my laptop is not progress.
- 03
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.
- 04
Less JavaScript
The fastest code is the code that never reaches the phone. HTML and CSS get the first try.
- 05
Write it down
Decisions go in the repository, next to the code they explain. Chat threads are where reasons go to disappear.
- 06
Say no early
If a deadline or a tool is wrong for the job, you hear it in week one, with the reason.
// Code review
Reviewed, then approved.
The people who merged the work, in their own words.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Ingrid SolvangVP Engineering · NorthwindWe 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
Marcus OyelaranEngineering manager · Kestrel PayHe 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
Hana TakedaHead of design · HaldenThe 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
Jonas LindqvistFounder · LoopdocsI 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
Amara NwosuProduct lead · TidewaterOur 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
Reviewed, then approved.
The people who merged the work, in their own words.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Ingrid SolvangVP Engineering · NorthwindWe 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
Marcus OyelaranEngineering manager · Kestrel PayHe 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
Hana TakedaHead of design · HaldenThe 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
Jonas LindqvistFounder · LoopdocsI 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
Amara NwosuProduct lead · TidewaterOur 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
Reviewed, then approved.
The people who merged the work, in their own words.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
Ingrid SolvangVP Engineering · NorthwindWe 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
Marcus OyelaranEngineering manager · Kestrel PayHe 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
Hana TakedaHead of design · HaldenThe 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
Jonas LindqvistFounder · LoopdocsI 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
Amara NwosuProduct lead · TidewaterOur 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
Tell me what you are building.
Three quick picks so the first reply is useful. You finish the message on the contact page.
// Start a project
Tell me what you are building.
Three quick picks so the first reply is useful. You finish the message on the contact page.
// Start a project
Tell me what you are building.
Three quick picks so the first reply is useful. You finish the message on the contact page.