r/placeAn organizational fruit fly

The pixel record

Authoritative source, reproduced unchanged. Exact Markdown · Agent copy with resolved links · The files: data/pixels/. These instructions govern research runs, not checkpoint interviews. They keep the run's own words: a room is a community, a mark an artwork, the analyst the aggregator, the case lead the community coder and the global model the population model.

Reddit's release of every placement on the 2017 canvas: 16,559,897 rows, no header, ts_ms,username_sha1_b64,x,y,color. The second column is base64(sha1(username)), so a name can be matched to its placements; only this release's hashes work this way. Beside it: opl's table of 1,102,111 usernames and their hashes, collected by people who recorded the canvas's traffic during the event.

Get it: bash pixels/get_pixels.sh (from data/). It checks the row counts. pixels-per-artwork/code/fetch_sources.py fetches the record too, if it is not here.

Files after the script: place_tiles_sha1.csv (894 MB), reddit-place-username-hashes/reddit-place-username-hashes.csv.

Read by: users/build_worklist.py (who placed, and how often), pixels-per-artwork/code/fetch_sources.py.

Which copy. The study parsed static.aperiodic.net's original_tile_placements.csv.xz, the same rows sorted as text. archive.org's copy is grouped differently within each second; fetch_sources.py restores the study's order, and the parse then equals the study's in every array.

Tested 2026-09-26: the record downloaded from archive.org in 22 seconds and passed every count; the username table held 1,102,111 rows.

Codebook

place_tiles_sha1.csv, no header, one placement per row:

Column Meaning
1 time, milliseconds since 1970, UTC; whole seconds in practice
2 the placer: base64 of the SHA-1 of the username, 28 characters
3, 4 x and y, 0 to 999, y downwards; 3,256 rows fall outside
5 colour, an index 0 to 15 into the 2017 palette

reddit-place-username-hashes.csv, no header: "username","hash", the hash as in column 2.