Manga screentone: a long laboratory bench of science demonstration apparatus — microscope, Van de Graaff generator, prism, orrery, magnets and iron filings — lit hard from one side.

ExploreLearning

Software Engineer

Remote Vue 3 · JavaScript

Math and science simulations used in classrooms. I modernized a decade-old JavaScript core onto Vue 3 without the simulations ever going dark.

The software

  • 550+ simulations
  • grades 3–12
  • US · Canada
  • sole dev lead

Gizmos is a library of more than 550 interactive math and science simulations for grades 3 to 12 — a pendulum you can change the mass of, a circuit you can wire wrong, a titration that runs. Schools across the US and Canada teach with them, which sets the whole engineering constraint: a simulation is not a page that can be down for an afternoon, it is a lesson plan somebody is standing in front of a class delivering.

It was the company’s flagship product. I was one of a small frontend team and the sole dev lead on Gizmos.

What I inherited

  • director · lingo
  • html5 rebuild
  • requirejs
  • jquery

A lineage — and the one band that never broke

The platform underneath, four times overDIRECTORlingo · shockwaveHTML5by contractorsREQUIREJSwhat reached meVUE 3modern javascriptthe migration I ledTHE LIBRARY550+ simulations · never dark for a school week
The band is the constraint, not the boxes. A row of platforms is a timeline; a row of platforms over an unbroken library is the reason nothing could ship as a cutover. Only the last arrow is mine — the three before it are what I arrived into.

Two decades of lineage, and none of it written down. The simulations began in Macromedia Director and Lingo, were rebuilt for HTML5 by outside contractors, and reached me as pre-ES6 JavaScript on RequireJS with no usable documentation.

The structural problem was not the age. It was that every Gizmo is its own system sitting on a shared core — so a change to the core is a change to 550 programs at once, and the only record of what each one depended on was the code itself.

The migration

  • vue 3
  • incremental
  • no cutover

There is no week in a school year where it is safe for a simulation to go dark.

Off
RequireJS · jQuery · pre-ES6
Onto
Vue 3 · modern JavaScript
Unit
one subsystem at a time, rebuilt as I reached it
Never
a big-bang cutover — old and new ran side by side
Proof
the library stayed live through every step

Bringing it in house

was
A standing external-contractor dependency. A bug fix was a scheduling problem before it was an engineering one, and the cycle ran in weeks.
is
The work came in house and the cycle became same-day. The migration is what made it possible — you cannot own code you cannot read.