Tombstone
JovianSuite
Sep 2005 โ Jul 2007 ยท age 23โ25
What it was
A one-person compiler for whole web applications, written in C# on WinForms. A designer drew absolutely positioned layers of controls in a visual editor, bound them to SQL templates and HTML row encoders, and pressed compile. Out came minified JavaScript, generated PHP endpoints with parameterized SQL, sliced background images, and button labels rendered to PNG. A tray-icon server held the project, handed out check-out locks per resource, broadcast chat, ran the compiler on request and kept a timestamped copy on every load. The suite existed to build Hurox, a MySpace-era social network, and on the last day of work it was still compiling it: 1,312 objects across 175 layers.
Wins, for the age
- At twenty-five, Jeff resolved a UI's reactive dependencies at compile time: extract every reference, refuse to build on a cycle, topologically sort the rest. That was nine years before Svelte (2016) made compile-time reactivity a movement.
- One declarative spec generating HTML, JavaScript, PHP, SQL and images, concurrent with Google Web Toolkit (2006).
- Its schema compiler generated serializable classes and editor metadata from one small schema, concurrent with the open-sourcing of Protocol Buffers (2008).
- Built a collaborative editor with locking, chat and continuous build, and a text control with incremental re-lexing. Then this young primate used all of it to run a real social network.
What it taught
- The application is a compilation target. The belief that software should be generated from a smaller, more honest description is fully formed here.
- The dependency graph is the design. Cycle detection and topological order were the load-bearing correctness mechanism.
- Build the tool, then build the thing with the tool.
- Speed outruns structure. No tests in about 40,000 lines, a "Copy of" the compiler as version control, minification by textual replace. It had to be rewritten within months.
Genealogy
Ancestors: GEM: a schema-driven editor with a compiler behind it. Mathml: an early habit of generating PHP from a structured description. ZMLC: the schema compiler that generated the entire data model. Descendants: HUROX: the social network it was built to compile. Jove 3: the ground-up rewrite; the dependency graph became a language. Jovian Katana V1: the designer that compiled dialogs into a whole PHP site.
Epitaph
Here lies a compiler that ate a social network's design and spat out the social network, rendering every label to a PNG because 2007 demanded it. It was rewritten before summer ended, which is the highest compliment a first version can get.