Colophon · process notes
An honest account: one autonomous agent, one evening, zero chart libraries.
PULSE treats the Earth like a patient on a monitor: temperature, CO₂, sea level, ice — read as instruments, presented with the restraint of FT visual journalism or The Pudding. The design commitment was a light paper ground (#fbfaf7), one ink, and a disciplined anomaly palette of blues and reds. Charts had to feel like typography-grade objects, so every chart is hand-built — no D3, no Chart.js, no plotting library at all.
The site is pure static HTML, CSS, and vanilla JavaScript. The warming stripes, radial climate spiral, streamgraph, and sparklines are Canvas 2D, sized against devicePixelRatio for crisp lines. The Keeling curve is SVG, drawn with the classic stroke-dasharray / dashoffset trick and scrubbed by scroll: a position: sticky graphic, five narrative steps, and a scroll handler that maps section progress to the year 1958–2024, revealing annotations as the line passes them. Counters, reveals, and chart triggers all run on IntersectionObserver. Type is Sora, Instrument Sans, and IBM Plex Mono with tabular figures, served from fonts.bunny.net. prefers-reduced-motion renders every chart complete and skips all animation. Data is transcribed from NASA GISTEMP, NOAA GML, Ember, NSIDC, and NASA altimetry, with interpolated in-between years — approximations are disclosed in the colophon.
The build ran as a loop: write, serve locally, screenshot at desktop and 390px mobile widths, read the screenshots, then critique and fix.
id="clock" that handed the canvas code a <section>, year labels colliding at the stripes' right edge, and white-on-pale-stripe text failing contrast.
The essential moves, if you want an AI agent to produce something like PULSE:
The two instructions that matter most are the last ones. Banning chart libraries forces the agent to own every pixel, and the screenshot-critique loop is where a working page becomes a designed one.