# 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: eliminating stutter during resize and rotation, orientation changes on iOS, strip plot clipping at different widths, theme re-rendering for dark/light switching.

The models could write all of it but couldn't see any of it, so @restlessronin carried the visual QA alone.

### The Cost

~500 commits across two repositories over eight 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.

## The Difference

The land cover article shipped September 2025, in the same two-week sprint as the research itself. The vibe-gain work started in April 2025. The first article shipped in July. The work needed to complete the series wasn't finished until late December, with the final article published January 1, 2026.

The bottleneck was never capability. It was feedback latency.

## 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 12, 2026:** Refined visual QA copy; corrected timeline to eight months from git log; split paragraphs for flow; renamed section.

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

