← Home

Interactive tools

Experimental mathematical games, simulations, and apps written (or supervised) over the years. Most of the older ones are Java applets that no longer run in modern browsers; this page tracks which have been ported to modern JavaScript, which still run elsewhere, and which are yet to be ported.

Status: Original = first published here · Ported = runs here now · Live = works elsewhere · To port = old Java, not yet rebuilt · Retired = superseded.

Relativity

Original
An interactive 1+1-dimensional Minkowski spacetime diagram: construct events, inertial worldlines, light rays, lines of simultaneity, observers, and constant-interval hyperbolae, and view them at once in two independently Lorentz-boostable reference frames — with relativistic Doppler colour shifts, energy / momentum / proper-time readouts, and a mode to “experience” a worldline's subjective time (co-moving frame plus a live backward-light-cone view). Includes worked scenes (twin paradox, pole and barn, light clock) and JSON import/export.
First published 2026-07-11 on this site.
Coded with the assistance of Claude Code.
The making of this app: a conversation transcript →

Number theory

Original
Enter a top row — the primes, prime gaps, a single spike, or various random models — and watch the triangular array of successive absolute differences build up, with parity or magnitude colouring, a live check of Gilbreath's conjecture on the left diagonal, and a zoomed-out canvas view for large arrays. A companion to the paper on Gilbreath's conjecture by Zachary Chase, Zach Hunter and Terence Tao.
First published 2026-07-11 on this site.
Coded with the assistance of Claude Code.
The making of this app: a conversation transcript →

Algebra

Live
A Scratch demo that solves a randomly chosen linear equation in one unknown using two operations.
Live
A more developed Scratch version with 12 levels, emphasizing challenging, entertaining problems over routine drill.
Live
A Scratch variant whose nth level is generated by playing n moves in reverse.

Logic

Live
A Scratch solver for Lewis Carroll's syllogism puzzles.
Live
An interactive textbook for first-order logic, written in JavaScript, HTML, and CSS. Source at github.com/teorth/QED.

Linear algebra

All the linear algebra apps below were originally coded by Kim Chi Tran in 2002, in Java 1.0.

Ported
Vector addition and subtraction, scalar multiplication, an elementary row operation (v − c·w), and the dot product.
original (Java, 2002)
Ported with the assistance of Claude Code.
Ported
Row-reduce a 4×5 augmented matrix by applying elementary row operations one step at a time, with an undo history and a running log.
original (Java, 2002)
Ported with the assistance of Claude Code.
Ported
Arithmetic on two matrices up to 5×5 — sums, products, powers, transpose, trace, determinant, and inverse.
original (Java, 2002)
Ported with the assistance of Claude Code.
Ported
Visualize how a 2×2 matrix transforms the plane — draw in the domain and watch the image appear in the range.
original (Java, 2002)
Ported with the assistance of Claude Code.
Ported
Explore the eigenlines and eigenvalues of a 2×2 matrix; drag a vector, or drag the columns of the matrix directly.
original (Java, 2002)
Ported with the assistance of Claude Code.
Ported
Orthogonalise a set of vectors step by step — subtract projections and normalise, with a live inner-product table.
original (Java, 2002)
Ported with the assistance of Claude Code.

Complex analysis

All the complex analysis apps below were originally written by Terence Tao in Java, mostly between 1998 and 2000.

Ported
An Argand-plane sandbox — drag a complex number and watch its Cartesian and polar forms, with buttons for basic operations.
original (Java, 1998)
Ported with the assistance of Claude Code.
Ported
Draw a curve in the domain and see its image under w = f(z) for a range of elementary functions.
original (Java, 2000)
Ported with the assistance of Claude Code.
Ported
Draw points, circles, and lines and watch a Möbius map w = (az+b)/(cz+d) send them to circles and lines.
original (Java, 1999)
Ported with the assistance of Claude Code.
Ported
Drag z and watch the several branches of the roots and the logarithm move — and swap across the branch cut.
original (Java, 1998)
Ported with the assistance of Claude Code.
Ported
See conformality: an analytic map acts locally like multiplication by f′(z), preserving angles.
original (Java, 1998)
Ported with the assistance of Claude Code.
Ported
Draw a contour and watch the running value of ∫ f(z) dz trace out as a vector sum.
original (Java, 1998)
Ported with the assistance of Claude Code.
Ported
Pick a center and see the Taylor and Laurent expansions of 1/((z−1)(z−2)) and their regions of convergence.
original (Java, 2007)
Ported with the assistance of Claude Code.
Ported
Draw different paths between two points; their antiderivative images all end at the same place.
original (Java, 2000)
Ported with the assistance of Claude Code.
Ported
Draw a contour around editable poles; the integral converges to 2πi times the enclosed residues.
original (Java, 2000)
Ported with the assistance of Claude Code.
Ported
Draw a contour and count how many times its image winds around 0 — the enclosed zeros minus poles.
original (Java, 2000)
Ported with the assistance of Claude Code.

Miscellaneous

Ported
The Perron-tree construction of a small-area set that still contains a unit segment in every direction — vary the iterations and overlap.
original (Java, 1998)
Ported with the assistance of Claude Code.
Ported
The infinite quadrant of the plane mapped conformally onto a bounded triangle, with infinity stretched onto the hypotenuse — draw curves in either region.
original (Java, 1998)
Ported with the assistance of Claude Code.
Ported
Interactive honeycombs (with Allen Knutson) modelling Littlewood–Richardson coefficients and Horn's problem — click hexagons to mutate, with the dual hive shown alongside.
original (Java, 1999)
Ported with the assistance of Claude Code.
Ported
Solve the exponent relations in named estimates — Hölder, Sobolev, Young, fractional integration, Strichartz, restriction/extension, interpolation, and scaling — with rational or symbolic inputs.
original (Java, 1999)
Ported with the assistance of Claude Code.
Multiple choice applet
Retired
A multiple-choice quiz applet, later superseded by a wiki.
original applet (Java, 2005)