Tombstone
bnjv3
Jun 2004 – Aug 2004 · age 22
What it was
Version 3 of an open-source Bayesian network toolkit in Java, rewritten over one summer in a university research lab. Jeff wrote most of the core, with three labmates adding samplers and other algorithms. Probabilities were not doubles but Value objects in an abstract field, so the same inference could run in floats, doubles, exact fractions or symbolic expressions. Probability tables were often not tables at all: products and projections computed through to their operands on demand, materialized only when a global memory budget allowed. Exact inference ran by clique tree, by bucket elimination, and in a multithreaded message-passing variant. On top sat an SWT desktop GUI whose visualizer showed pseudocode stepping in lockstep with the graph, and could play the algorithm backwards. It was handed off as a "3.0 pre-alpha" after five dense weeks.
Wins, for the age
- At twenty-two, Jeff built an algorithm visualizer where every step was an invertible operator, so rewind, scrubbing and frame recording came free. It arrived seven years before VisuAlgo (2011) made that kind of teaching tool popular, though academic animation systems came earlier.
- Pseudocode panels with live variable bindings, real node names substituted as the algorithm ran, also seven years ahead of VisuAlgo (2011).
- Exact marginals as fractions, from the same code that ran in doubles. Jeff knew of no other network toolkit doing that in 2004.
- Found on their own the idea behind expression templates: lazy algebra, but with a budget, so a 179-node network fit in the memory of a 2004 lab machine.
What it taught
- Laziness needs a budget. The cache manager was the difference between elegant and out of memory.
- Invertible steps give rewind for free. The same principle as undo as data, learned in a lab rather than an editor.
- Abstraction has a price: an object per multiplication made exact arithmetic possible and the hot loop slow.
- Shared codebases teach humility. A labmate left a printout naming a bug for Jeff to fix, and the exact-rational constructor had a sign bug of its own.
- Never commit credentials, even to a lab server.
Genealogy
Ancestors: none on record. The narrating instinct starts here, in a lab, at twenty-two. Descendants: Edu Lang: stepwise, inspectable execution as a teaching surface. Tutor: symbolic values and the insistence on showing the work.
Epitaph
Five weeks, four students, one clique tree. It computed exact marginals as fractions, explained itself in pseudocode, and could run its own reasoning backwards, which is more than most mammals manage.