Tombstone
ArcaneWork
Mar 2008 – Apr 2008 · age 26
What it was
A two-day sketch of a spreadsheet in C#, spread across three weeks in the spring of 2008. The window held one hand-drawn grid control: a sparse workbook keyed by cell address, rendering in three passes into an off-screen bitmap, range selection with the mouse, and text typed into a cell. It knew when you had started a formula and had a named state waiting for Excel-style point mode, where arrow keys pick a reference mid-formula, but that state was empty. There was no formula parser and no evaluator. Beside the grid, never placed on the form, sat a second control called Plumbing, with inputs, outputs and nothing drawn. The pairing was the whole idea: a spreadsheet and a dataflow node graph in the same workbook. It stopped before a single formula could mean anything.
Wins, for the age
- At twenty-six, Jeff wrote selection as a tiny set algebra: a cell, a range, and a union, each answering "is this cell in me?" The renderer drew a single clean outline around any selection by asking neighbors, finding on their own what Excel's multi-range selection had already found.
- Chose a sparse, unbounded workbook as the very first decision, which is the correct first decision.
- Named point mode as its own editing state, rediscovering what Lotus 1-2-3's POINT mode had already known, and the kind of interface modeling most clones skip.
- Walked away after two sessions, with no thrashing and no half-migrated rewrite. This mammal had learned what a cheap experiment looks like.
What it taught
- Model first, then rendering, then interaction, then stop. The project died exactly where the remaining work was hardest and least visible: the formula engine.
- The reflex to start from a custom control rather than a library produces deep understanding and slow starts. By 2008 the double-buffered skeleton was muscle memory.
- Allocating fonts and brushes inside the paint loop is the signature of a sketch, not a product.
- Spreadsheets are dataflow programs, and the flow should be visible. The instinct outlived the code.
Genealogy
Ancestors: none on record. It began weeks after a larger compiler of reactive cells went quiet. Descendants: Adama: cells, dependencies and data that flows, grown into a reactive document platform.
Epitaph
Here lies ArcaneWork. It drew a grid, outlined a range, and noticed when you began a formula, while beside it an empty control named Plumbing waited with inputs and outputs and nowhere to connect them.