Skip to content
Skip to content
Skip to content

Case study

A charting layer that pans through a million points without dropping a frame.

Pan and zoom at 1M pointsfrom 12 fpsto 60 fps

Client
Tidewater
Year
2023
Role
Frontend and WebGL developer
Kind
Experiment
A large monitor full of orange line charts and a heat map in a dark studio

The problem

Tidewater's analysts explore sensor data from offshore wind farms. The old SVG charts gave up at around twenty thousand points.

The approach

  • Lines and scatter plots draw on the GPU; axes, labels and tooltips stay in the DOM so they remain selectable and readable by a screen reader.
  • Data is decimated per zoom level in a worker, with the raw points fetched only when the user gets close.
  • Every chart has a table view with the same data, one key press away.
Two developers working late on laptops, city lights outside
Two developers working late on laptops, city lights outside
Phone wireframe sketches on paper and a hand with a pen
Phone wireframe sketches on paper and a hand with a pen

The result

A million points pan at a steady 60 frames a second on a three year old laptop. Analysts stopped exporting to spreadsheets to look at a week of data.

Built with

TypeScriptWebGLreglWeb Workers

Case study

A charting layer that pans through a million points without dropping a frame.

Pan and zoom at 1M pointsfrom 12 fpsto 60 fps

Client
Tidewater
Year
2023
Role
Frontend and WebGL developer
Kind
Experiment
A large monitor full of orange line charts and a heat map in a dark studio

The problem

Tidewater's analysts explore sensor data from offshore wind farms. The old SVG charts gave up at around twenty thousand points.

The approach

  • Lines and scatter plots draw on the GPU; axes, labels and tooltips stay in the DOM so they remain selectable and readable by a screen reader.
  • Data is decimated per zoom level in a worker, with the raw points fetched only when the user gets close.
  • Every chart has a table view with the same data, one key press away.
Two developers working late on laptops, city lights outside
Two developers working late on laptops, city lights outside
Phone wireframe sketches on paper and a hand with a pen
Phone wireframe sketches on paper and a hand with a pen

The result

A million points pan at a steady 60 frames a second on a three year old laptop. Analysts stopped exporting to spreadsheets to look at a week of data.

Built with

TypeScriptWebGLreglWeb Workers

Case study

A charting layer that pans through a million points without dropping a frame.

Pan and zoom at 1M pointsfrom 12 fpsto 60 fps

Client
Tidewater
Year
2023
Role
Frontend and WebGL developer
Kind
Experiment
A large monitor full of orange line charts and a heat map in a dark studio

The problem

Tidewater's analysts explore sensor data from offshore wind farms. The old SVG charts gave up at around twenty thousand points.

The approach

  • Lines and scatter plots draw on the GPU; axes, labels and tooltips stay in the DOM so they remain selectable and readable by a screen reader.
  • Data is decimated per zoom level in a worker, with the raw points fetched only when the user gets close.
  • Every chart has a table view with the same data, one key press away.
Two developers working late on laptops, city lights outside
Two developers working late on laptops, city lights outside
Phone wireframe sketches on paper and a hand with a pen
Phone wireframe sketches on paper and a hand with a pen

The result

A million points pan at a steady 60 frames a second on a three year old laptop. Analysts stopped exporting to spreadsheets to look at a week of data.

Built with

TypeScriptWebGLreglWeb Workers

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.