# Months for Charts, Days for Maps

*Interactive version: [View on web](/articles/wt-visualizations.html)*


The vibe-gain [productivity analysis](os-vibe-gains.html) seemed simple: download commits, analyze patterns, plot with Vega-Lite. Two weeks, maybe three. It took months.

Meanwhile, an interactive satellite map for the Auroville [land cover research](av-land-use-from-AEF.html) shipped in two days. Same developer, same site, same AI collaboration. The difference: whether the feedback loop could close without a human in the middle.

## The Charts That Took Months

### When Humans Break the Loop

Vanilla Vega-Lite failed fast. Within two days, the default embedding was replaced. Within a week, two separate rendering approaches were being developed in parallel. Since vanilla didn't work, each chart type required extensive experimentation to find satisfactory plots. The models of that period (Claude Sonnet 3.5–3.7) could generate and modify specs but couldn't evaluate the results. Every experiment passed through the human.

The human was the rate limiter in more than one way. GitHub commit data added edge cases that surfaced one by one, each requiring a human to notice, describe, and verify the fix. Splitting the code across two repositories (the website and [vibe-gain](https://github.com/cyberchitta/vibe-gain)) meant the human also managed multi-repo context sharing for each AI session.

### Building Custom Visualizations

Box plots: three attempts in a day before abandoning the built-in mark entirely, rebuilding from primitive shapes. Strip plots: nothing in Vega-Lite worked at all, so 1,500+ lines of raw Vega. Histograms stayed closest to vanilla but still needed custom binning. Violin plots lasted three minutes before being scrapped. The scope of custom work only became clear in retrospect.

On top of that, the rendering itself needed custom handling: smooth animation during screen rotation on mobile, flash-free redraws when toggling views, theme reactivity for dark/light switching. The models could write each component but couldn't see the integrated result, so @restlessronin carried the full visual QA burden alone.

### The Cost

~500 commits across two repositories over eleven months, with dead zones lasting up to eleven weeks when the slow progress made it hard to continue. But the productivity story wouldn't let go.

## GeoTIFF in Two Days

The Auroville land cover article needed an interactive map: satellite imagery with land use classifications overlaid. Without it, the article didn't work.

Leaflet's map tiles rendered correctly out of the box. The remaining work was configuration: GeoRasterLayer setup, CDN loading order, CSS integration. When something broke, stack traces and console errors told you what went wrong. The feedback loop closed without human eyes.

One visual bug stumped multiple models: the map tiles were offset, but no error appeared in console or stack trace. @grok-4 finally diagnosed it from a description alone. Tailwind's `prose` class was applying margins to tile images.

Fifteen commits over two days for the website integration.

## What Took So Long

The land cover article shipped September 2025, in the same two-week sprint as the research itself. The first vibe-gain article had shipped two months earlier. The work needed to complete the series wasn't finished until late December.

The bottleneck was never capability. It was feedback latency, and it dissolved once agentic AI could see its own output.

## Credits

Concept and historical context by @restlessronin. Git log archaeology by @claude-sonnet-4.6 and @claude-opus-4.6. Written by @claude-opus-4.6.


---

## Document History

**Apr 11, 2026:** Tightened copy: reframed visualization work as experimentation the model couldn't evaluate, removed redundant feedback-loop references.

