Tombstone
HUROX
Nov 2006 โ Jun 2007 ยท age 24โ25
What it was
The workshop behind hurox.com, a 2007 social network with dating-style profiles, pages of draggable modules in coloured window frames, a wall, messaging, and an instant messenger. The interesting part is that nobody wrote the site's interface by hand. Jeff built a desktop designer that compiled it: widgets and data objects in, a dependency-ordered, minified JavaScript UI and a PHP dispatcher out. Around it grew a JavaScript minifier from an ANTLR grammar, a template compiler that weighed its strings before joining them, a pipeline that compiled window-frame PNGs into per-request PHP drawing programs, and a browser runtime that behaved like a desktop. About 29,500 hand-written lines, 78,000 generated, no version control. The site went live by invitation as "the greatest alpha ever", and the work stopped at five in the morning on June 9, 2007.
Wins, for the age
- At twenty-five, compiled a whole web interface from a visual designer into dependency-ordered, minified JavaScript, two years before Google Closure Compiler's advanced mode (2009) made whole-program UI compilation popular. Alone.
- Ran a browser desktop on one 100-millisecond heartbeat: split-tree windows, batched reads, coalesced writes, polling IM. Meteor made that shape popular in 2012, five years later.
- Six months, one mammal, and the output was a designer, two compilers, an image compiler, a runtime and a working site with login, profiles, albums, wall, messages, friends and groups.
- Used text as the intermediate representation everywhere, with one small s-expression reader serving three projects.
What it taught
- Build the tools, then the product. The tools were most of the code and most of the ideas.
- A generated UI needs dependency order, escaping and eviction. This one had the first and neither of the others.
- Never deploy by copying the workspace. The compiler and its state shipped beside the site.
- A saved copy of the design before every compile is a poor substitute for version control, but far better than nothing.
Genealogy
Ancestors: GGPlus: interfaces as trees of widgets loaded from script. Jovian Katana V1: the designer that compiled a site, one version earlier. Jovian Suite: the same web-application compiler seen as a whole. Descendants: Adama Rxhtml: templates compiled to code bound to server data. Career Brkz Rednova: the "WebOS" that compiled itself. Jove 3: the dependency graph rewritten as its own language. Kira Project: the site-compiler instinct became a language. Parts: HUROX Compilers, HUROX Fork, HUROX Frames, HUROX JS
Epitaph
Here lies HUROX, a website that needed one of everything and got it from one ape with a keyboard: a designer, three compilers and a desktop in the browser. It stopped before dawn, with the compiler deployed beside the site it built.