Devin Shao

BuilderData vizSoftware tools
Scroll
Selected work

Things I've built

localhost:3000
Shot Atlas screenshot
01
NBA Data Visualization

Shot Atlas

A static website that charts public NBA stats for 31 seasons, from 1996-97 to 2026-27. A Python pipeline pulls NBA.com data daily and writes JSON files for 15 pages of D3 charts, with no server or database.

PythonJavaScriptD3.jsnba_api
Shot chartsHexbins against league averages
Daily updatesRuns each morning at 7:31
Data checksCross-checks repeated site numbers
localhost:3000
GraphSight screenshot
02
Graphing Calculator

GraphSight

A graphing calculator built around Key Points. It finds a function's roots, turning points, and asymptotes, marks them on the graph, and explains each one at an Algebra, Precalculus, or Calculus level.

ReactTypeScriptViteHTML CanvasWeb Workers
Key PointsFinds and marks features
Three levelsAlgebra to Calculus
Explain cardsExplains each key feature
axiomiq.org
AxiomIQ screenshot
03
Math Puzzle Platform

AxiomIQ

A free community site for hard math and logic puzzles, with 483 problems across five topics. The static site checks answers in the browser without serving them and stores progress on the visitor's device.

PythonJavaScriptKaTeXCloudflare Pages
Hashed answersChecked in the browser
Next problemSuggested by shared concepts
Works offlineWhole site precached
Visit AxiomIQ
DevNotch screenshot
04
macOS Utility

DevNotch

A native macOS utility in the MacBook notch that shows whether coding agents are working, waiting, done, or failed. It expands into a control panel for agents, local servers, Git, and builds.

SwiftSwiftUIAppKitmacOS
Agent statusWorking, waiting, done, failed
Server controlNamed ports and safe kill
Build historyTracks dn run commands
localhost:3000
SAT Question Bank screenshot
05
SAT Prep Platform

SAT Question Bank

A free, no-account app with 10,458 official College Board SAT Suite questions. It includes full-length adaptive practice tests, automatic error logging, and a predicted score. The static site keeps progress in the browser.

Next.jsTypeScriptTailwind CSSFirebaseKaTeX
Adaptive testsBluebook-style modules
Error logEvery miss saved
Predicted scoreRasch-based estimate
localhost:3000
Wander screenshot
06
Algorithm Visualizer

Wander

Races breadth-first and depth-first search through the same random maze, with live queue and stack animations. Shows graph traversal step by step.

TypeScriptHTML CanvasWeb AudioVite
Live raceOne cell per tick
Queue vs stackAnimates each frontier change
Share linksReproduce mazes from seeds