This inquiry begins in thinking blue and seeks to find blue resonances across atmosphere, language, memory, and digital mediations.
Discreteness, atmosphere, and digital mediation
Orbits of Blue · open the interactive →
| 2026-10-16 | web | blue page v3: added Gathered (contact sheets of the 43 sky and 75 affect images via cuts/gathered_sheets.py -> gathered/) and Studies (the cuts/ screen experiments); V4; a Set aside group (resolution experiment; blue ladder; superseded corpus lines) kept as record |
| 2026-10-16 | web | blue page v2: plates in a zoomable viewer with specs (print size from the PDF; method; date; links) and a filmstrip per group; four screenshots of Orbits of Blue as the Interactive group; hero screenshot opens the interactive; web-renders/ = PDFs rasterised at 6000-9000 px (pdftoppm) for zoom |
| 2026-10-16 | interactive | Orbits of Blue v4: full-screen button (native fullscreen where the browser allows; otherwise the chart fills the window) |
| 2026-10-16 | web | rachelhorst.ca/blue/: notebook page built by rachelhorst.ca/blue-src/build_blue.py from this folder (plates as web jpgs + PDFs under 20 MB; data CSVs; log; Unsplash credits; Orbits of Blue at /blue/orbits/)noindex; not linked from the site nav |
| 2026-10-16 | interactive | Orbits of Blue v3: uncoloured names grouped by kind on the outer orbit with arc labels larger type; dashed namesake threads to coloured names whose name matches (exact, or all distinctive words shared); systems as a dropdown with per-system source links and toggles; new arrangements: greyed-to-vivid (chroma), naming system bands (rough order of date), spiral (lightness + agreement), namesake match is string-based |
| 2026-10-16 | interactive | Orbits of Blue v2: threads for every pair within a chosen dE (slider 0-15; default 12 = ~8000 threads) colour = mix of the pair, fading to the night background as (1-dE/15)^1.4; far threads drawn first; focus threads brightened, thread reach is a choice |
| 2026-10-16 | interactive | Orbits of Blue (published artifact; copy at names/plates/orbits-of-blue.html): 662 names on canvas angle = hue (205-315 mapped to full turn, #0000ff hue at top), radius by mode: attention (0.05+(5-k)*0.19+L*0.16) / lightness / dE from #0000ff; dot size by k; hover shows threads to names within dE<5; system filters; search; 119 uncoloured names on halo, no ring labels |
| 2026-10-16 | names | cuts/orbits3.py: O3 orbits of attention: ring = number of distinct naming systems with a name within dE76<5 (own system included); 9 systems (China/Japan removed); labels carry own system and the systems naming nearly the same blue; 64x68in vectornaming frequency |
| 2026-10-16 | names | O2 regenerated without the traditional colours of China and Japan rings (Roy's call); 662 names in 9 systemsMLMC multilingual ring kept |
| 2026-10-16 | names | cuts/orbits2.py: O2 orbits of naming: 730 blue names (Lab hue 205-315 & chroma>10) from 11 naming systems via npm color-name-lists 3.34.0 (Werner Ridgway Wada LeCorbusier ISCC-NBS Japan China RAL CSS xkcd MLMC non-English excl. Persian for lack of text shaping); ring per system; angle=hue x2.8; radial=L*; outer ring = 119 uncoloured names; 60x64in vectornames/orbits_names.csv carries per-name source and licence |
| 2026-10-16 | names | cuts/orbits.py: O1 orbits around #0000ff: radius = dE76 from #0000ff angle = Lab hue (#0000ff hue at top), near-greys (chroma<=4) at bottom axis; uncoloured names evenly on outer orbit; spokes and hue names after Vanderpoel Plate XXIX; hue differences x2 to spread, 24x26in vector |
| 2026-10-16 | fix | blue_300.csv: survey names that are also CSS names (e.g. 'blue') now take the survey hex as intended; N1-N3 regeneratedearlier plates showed survey 'blue' as #0000ff |
| 2026-10-16 | names | 26 more hexes from Wikipedia colour pages (article infobox preferred over list; named synonyms Berlin/Paris = Prussian kept; judgement equivalences dropped: Thénard's French ultramarine, manganese, tiānlán). Values read via page summaries; spot-check before print. 181 of 300 now coloured. namegrid boxes now show name sized to fill + hex + source tag; spelling lines ultramarine, N1-N3 regenerated |
| 2026-10-16 | names | cuts/namegrid.py: 300 names in boxes (155 coloured by hex ordered by L*; 145 paper boxes by group) + squiggle lines: colour = 2 nearest colours dE<12 (172 links); spelling = trigram Jaccard>=0.42 or shared distinctive word (353 links); wobble seeded and decorative, N1 N2 N3 |
| 2026-10-16 | names | V5: same as V4 but 'dark' excluded and one name per colour (greedy matching of closest colour-name pairs; no repeats within a square)V4 kept for comparison |
| 2026-10-16 | names | names/blue_300.csv: the 300 names with group; 155 carry a hex (xkcd survey or CSS named colour or #0000ff); 145 have none. cuts/vanderpoel_named.py: each of 12 analysed colours named by nearest of the 155 (dE76); grey italic if >20V4 |
| 2026-10-16 | cut | cuts/vanderpoel.py: colour analysis after Vanderpoel (1902): k-means Lab k=12 seed 0 on pixels at 160px (80px pooled for words); 100 cells allotted by largest remainder; ordered dark to light; V1 single sky; V2 eight words pooled; V3 contact sheets (blue sky; sad)cream ground and serif type echo the 1902 plates |
| 2026-10-16 | names | 100 blue names from the xkcd colour survey (949 names; 188 blue-ish by name or Lab hue 220-300 & chroma>8) saved with hex to names/xkcd_100.csv; first 200 names were from Claude's memory (unsourced)selection of the 100 = names not in the first 200 |
| 2026-10-15 | cuts/prints.py: print plates as PDF (raster panels 300dpi; line drawings as vector isolines at shade-band thresholds instead of raster edge counts). A 24x13.5; B C D 24x18; F 36x12; G and each H/I word 18x24. Corpus plates use full-res sky originals; affect from 800px; JPEG draft decodeblue-ladder plate set aside at Roy's request (prints/_set_aside) | |
| 2026-10-15 | cut | cuts/words.py: word-as-cut fields + pooled palette (Lab k-means k=12; every 7th pixel) for affect and sky sets; corpus line drawings (n=8 blur 6) for affect; blue-band ladder across all 8 wordssame blue band 220-300; grey = chroma<=4 |
| 2026-10-13 | stopped | resolution experiment set aside at Roy's request (3 images done; partial ESRGAN run discarded)back to colour and cuts |
| 2026-10-13 | gather | Unsplash napi search (free; premium/plus excluded) top 15 per queryaffective set: sad / calm / melancholy / lonely / cold -> 75 images; one image (q5QXU-97_i0) returned for both sad and lonely |
| 2026-10-13 | resolution | cuts/resolution.py: 800px image enlarged 4x by nearest / bicubic / Lanczos (PIL) / Real-ESRGAN x4plus (open weights; RRDBNet; CPU; 192px tiles 12px pad); truth = 4000px original resized Lanczos to 4x frame; fabrication = per-pixel CIE76 dE; shade cuts n=2..12 blur 2px on 1:1 detail crops3 images; ESRGAN run on Claude's cloud workspace and copied into resolution/ |
| 2026-10-13 | gather | gather-full.command: Unsplash originals at w=4000 q=92 -> sky/unsplash/full (43 images 100MB)high-res sources for print and ground truth |
| 2026-10-12 | lines | lines2.py: blur radius 0/2/5/10 before shade cuts (scale of attention); corpus line drawings per query (n=8 blur 6)earlier unblurred corpus plates kept as superseded_* |
| 2026-10-12 | lines | lines.py: shade cuts (lightness posterised n=2..12) layered; k-means boundaries k=2..16 layered; 24 isoblue contours3 images |
| 2026-10-12 | cut | cuts.py exp3: corpus fields hue x lightness per query; mean vs Unsplash colourblue band = Lab hue 220-300; chroma>4 |
| 2026-10-12 | cut | cuts.py exp2: Lab k-means ladder k=1..16same image |
| 2026-10-12 | cut | cuts.py exp1: platform one-colour / k-means RGB k=4 / k-means Lab k=4 / hue-naming 12 bins / refusing cut (Lab k=4 radius dE6) + residue mapsimage blue-sky_v6zfklLsIiY; seed 0 |
| 2026-10-12 | gather | Unsplash napi search (license=free; premium/plus excluded) top 30 per queryqueries: blue sky / sea / twilight -> 13/15/15 free images. Unsplash assigns each photo a single 'color' (its own cut) recorded in manifest. |
Source photographs from Unsplash, under the Unsplash Licence, by Aaron Burden, Aaron Burden, Aaron Burden, Abhijith P, Achmad Rizkynanda Noor, Alex Padurariu, Alexander Andrews, ALMA, Andre Benz, Ante Hamersmit, Arifur Rahman, Arifur Rahman, Atharva Tulsi, Bernard, Bob Canning, Bowen Chin, Bryan Rodriguez, Carmine Savarese, Chandler Cruttenden, Chapman Chow, Conor Sexton, Cristian Palmer, Daniel Olah, Daniil Onischenko, Dave Hoefler, Davies Designs Studio, Dev Asangbam, Dev, Dmytro Soroka, Eric Ward, frank mckenna, Gabriel Matula, Gabriel, Geri Mis, Giga Khurtsilava, Grant McIver, H&CO, Harli Marten, Henrik Dønnestad, Ian Keefe, iccup, Ivan Bandura, Jack Lucas Smith, James Eades, Jan Kronies, Jared Rice, Jarle Johansen, Javardh, Jelleke Vanooteghem, jenna duffy, Jeppe H. Jensen, Jeremy Bishop, Joachim Lesne, John Noonan, Jordan Steranka, Joseph Barrientos, Josh Felise, Josh Hild, Joshua Song, Joshua Woroniecki, Joshua Woroniecki, Jr Korpa, K. Mitch Hodge, Karsten Winegeart, Keenan Constance, Kelly Sikkema, kilarov, Kinga Howard, Kumiko SHIMIZU, Louis Galvez, Luis Villasmil, Lukas Rychvalsky, M., Majestic Lukas, Marissa Rodriguez, Masaaki Komori, Matt Hardy, Matthew Henry, Matthew Henry, Matthew McBrayer, Max Ducourneau, Mink Mingle, Mohammad Alizade, Natalia Y., Nathan Dumlao, Nik Shuliahin, Noah Silliman, Patrice Bouchard, Paul Pastourmatzis, Phil Desforges, Ravi Pinisetti, Ritam Baishya, Sanket Deorukhkar, Sasha Freemind, Sasha Freemind, Satyam Pathak, Sean Oulashin, Shifaaz shamoon, Shyam, Silas Baisch, Sonny Mauricio, Spencer Backman, Stormseeker, Sumner Mahaffey, Thimo Pedersen, Thom Holmes, Thomas Charters, Thomas Vimare, Tim Gouw, Umut Ozdemir, Valentina Ivanova, Warren, wisconsinpictures, Yoann Boyer, yucar studios, zenad nabil, Zoltan Tasi.
Colour names via the open color-name-lists collection; per-name sources and licences are in the data.