Tombstone
HUROX js: the browser runtime for hurox.com
Mar 2007 – May 2007 · age 25
What it was
The JavaScript that turned a 2007 browser into a window manager, half hand-written and half generated by Jeff's own designer. Each user's page was a binary split tree of draggable, resizable frames, with drop zones that shrank as frames grew, and the layout was saved as s-expressions. Frame corners were PHP image URLs carrying three colours, so the server painted the chrome in each viewer's scheme. A WinForms-style anchor engine kept the designer's layout rules alive in the page. All data rode one 100-millisecond heartbeat: reads queued, deduplicated and flushed in one POST, writes coalesced, and server replies arrived as tiny opcode programs the client interpreted. It ran on IE6, IE7, Firefox 2 and Opera 9, with a polling instant messenger, a carousel navbar, and a hand-rolled scrollbar and colour picker. The last edit was at 03:03 on May 2, 2007.
Wins, for the age
- At twenty-five, ran a whole browser desktop off one heartbeat with a batched, remapped read cache and coalesced writes, five years before Meteor (2012) made that pattern popular.
- Server-rendered frame chrome colourised by URL parameters, arriving the same year as Google's Chart API (2007) with its URL-parameterised server images.
- Wrote the window manager, anchor layout, scrollbar and drag layer by hand, because in 2007 nobody was going to hand them to this primate.
- About 10,500 hand-written lines that actually worked: edit mode, modules for text, images, music, video, friends and wall, profile saves, autosave, IM with tabs.
What it taught
- The browser can be a desktop, if you write the desktop.
- One heartbeat beats many timers. Batching kept the request count predictable.
- A compiled UI needs a runtime contract: short ids, decoders and anchors are the ABI between designer and page.
- Escape at every sink. Raw server data went into
innerHTMLeverywhere, and debug alerts shipped on every page build.
Genealogy
Ancestors: Evolution eXPeriment: a 100-millisecond heartbeat and colon-separated text commands between client and server. Descendants: Career Facebook: the question of keeping every user's view fresh, at a billion users. Jove 3: the runtime reborn as a JavaScript kernel. Part of: HUROX.
Epitaph
Here lies a desktop drawn inside a browser, one heartbeat at a time, with pages saved as Lisp and a messenger that asked every second. Its last edit came at three in the morning and left the debug alerts in.