
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
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.