Back to projects

Experiments

Interactive Data Visualization

This collection of experiments focuses on building performant frontend visualizations for complex datasets, combining mapping, charting, streaming data, and interaction design.

ReactD3.jsCanvasMapbox GL

Overview

Many of the ideas grew from challenges I encountered while building production analytics applications. The project compares different visualization approaches and rendering technologies under realistic frontend constraints.

Goals

  • Large datasets
  • Streaming information
  • Geospatial analytics
  • Interactive dashboards
  • Performance optimization
  • Rendering efficiency

Technical Focus

  • React
  • D3.js
  • Canvas API
  • eCharts
  • Mapbox GL
  • SVG vs Canvas rendering
  • Performance profiling
  • Data visualization architecture

Challenges

Different visualization libraries excel at different workloads. One of the most interesting engineering questions has been understanding when SVG begins to struggle, when Canvas becomes a better fit, and how rendering choices affect the overall user experience.

What I'm Learning

Visualization is about much more than drawing charts. Good interfaces help people discover patterns, ask better questions, and understand information quickly. That requires balancing performance, usability, interaction design, and visual clarity.

Visualization case study

Designing a performant real-time SDR waterfall

The work began by collaborating with backend engineers to understand what users needed from the incoming radio-frequency data, how much of it should be delivered, and where it could be reduced without losing the most valuable signal. That shared data contract then informed the D3 and Canvas rendering architecture on the frontend.

Baseline

Start by defining the useful signal

This first data iteration helped frame the product question: how much data should reach the user, and which parts are most valuable for interpreting the signal? I worked with backend engineers to shape that contract before optimizing how the frontend rendered it.

Dense unfiltered SDR spectrum and waterfall visualization before data reduction

Rendering architecture

D3 for meaning, Canvas for density

D3 manages scales, axes, and the readable spectrum line. Canvas renders the pixel-dense waterfall as a bitmap, avoiding a DOM or SVG element for every sample and historical cell.

Streaming SDR dashboard combining a D3 spectrum line chart with a Canvas waterfall heatmap

Data optimization

Remove complexity before rendering

The visualization reduces samples to the screen’s useful resolution, normalizes the display range, and keeps a bounded rolling history. The result preserves signal shape without pushing redundant data through React or the renderer.

Optimized SDR spectrum and waterfall with a clear signal envelope and simplified visual density

Product experience

Keep streaming controls understandable

Frequency, bandwidth, presets, connection state, and limits remain visible around the chart so performance work supports the task instead of turning the visualization into an isolated demo.

LocalView SDR waterfall dashboard with frequency, bandwidth, presets, and streaming controls

Performance model

  • Prioritize

    Agree with backend engineers on which data is most valuable to users before deciding what the interface needs to render.

  • Bound

    Keep a fixed rolling history instead of allowing the waterfall dataset to grow indefinitely.

  • Separate

    Let React manage controls and state while imperative drawing handles the high-frequency render loop.

  • Render

    Use D3 where semantic scales and interaction matter; use Canvas where pixel throughput matters.

Interview Q&A

Why experiment with multiple visualization libraries?

Every library has different strengths. Building the same concepts with multiple technologies has helped me better understand their trade-offs and choose the right tool for different types of applications.

What interests you about visualization?

I enjoy turning large amounts of technical information into interfaces that people can understand almost immediately. It's one of the places where engineering, design, and user experience come together.

Connect

Let's Build Something Great Together

I'm always happy to chat about frontend engineering, accessibility, React, or interesting opportunities.