Sawbaum: reconstructing an interaction after its media disappears
Sawbaum was a Vine montage tool made by Avi Flombaum and Hannah Sawtell for Rhizome’s Seven on Seven in 2014. Users arranged six-second video loops on a canvas, changing their position, size, opacity and stacking order. The archive preserves enough evidence to explain and demonstrate that interaction, even though the original montage media is missing.
Surviving evidence and missing dependencies
The restoration record identifies original Rails source, a development SQLite database, logs, presentation slides and a saved recap containing a GIF of the work. The development records point to Vine CDN URLs. They do not contain the missing production history or the video bytes behind those URLs.
That distinction determines the restoration. The current experience does not claim to recover the original event montages. It uses preserved documentation and assets to explain the work, and replacement footage to demonstrate its behavior. Recovery of the original Vine media remains separate research, rather than an assumed success.
Recover assets and build a demonstration
The asset task looks up archived paths in the scanner catalog, resolves content hashes and downloads the saved GIF and slide images from B2. This makes the recovery possible without mounting the old drive. A separate ffmpeg task cuts new footage into six-second, 480×480 muted MP4 loops.
The demo uses 2026 Knicks footage. Those clips are modern substitutions, not recovered 2014 recordings. The source mapping and conversion arguments are explicit in lib/tasks/sawbaum.rake:33 and :51.
Rebuild selected browser behavior
A JSON file defines the montage name, slug and clip geometry. SawbaumContent loads it into small data structures; the controller serves playback and editor routes. Modern Pointer Events replace the old jQuery UI interaction, with drag, resize, opacity, stacking and delete controls.
The editor is a sandbox. Its Copy layout action exports the current arrangement as JSON for a maintainer to paste into the file-backed montage. Reloading does not preserve edits, and Add a Video is inactive. Implementation: app/services/sawbaum_content.rb:5 and public/archive/sawbaum/sawbaum_editor.js:135.
The root route now opens the demonstration montage, superseding the initial plan for a story landing page. Historical notes remain useful evidence, but current code establishes the available routes.
Sawbaum makes preservation limits visible: recovering application source can preserve an interaction without recovering the external media it once depended on. The honest result is a documented reconstruction with a working demonstration. Compare flombaum.com’s database recovery and Tweefle’s dataset playback.