Field notes & methods
How I collect and care for the AIM Buddy Icon Archive
A curator’s tour of the homemade crawler, catalog records, duplicate families, machine-assisted descriptions, and moderation work behind this archive.
1. Fieldwork with a homemade crawler
The collecting end of this archive is a kind of junky web crawler that I run inside a coding-agent harness, currently built around Codex. Old fan sites, Wayback captures, direct image directories, and downloadable packages all fail in their own historically interesting ways. The crawler trips over broken HTML, vanished hosts, odd redirects, mislabeled files, and layouts nobody has used in twenty years; the harness is constantly fixing or extending it as new edge cases turn up, and then I send it back out.
It is less a finished robot than a field rig with a wrench taped to the side. That is part of the method: every repair becomes another repeatable way to recover a small corner of the old web. If a collection survives inside an installer or self-extracting package, I keep the package as source evidence and use a trusted static tool to unpack it. I do not run mystery software from 2003.
2. Accession the file, not just the picture
When a candidate reaches the archive, the production server inspects it again instead of trusting whatever the crawler thought it found. It identifies the format from the actual bytes, checks that the dimensions fit the known AIM buddy-icon families, counts animation frames, records the byte length, and calculates a SHA-256 digest. The upload is accepted only when that server-side inspection agrees with the submitted record.
The digest becomes the file’s archival identity and storage address. Validated bytes are moved atomically into the content-addressed corpus, and the download route serves those original bytes rather than a resized gallery derivative. The production server holds the authoritative copy; the crawler does not quietly accumulate a second archive under my desk.
3. Keep the catalog card with the object
An icon can have many observations. For each sighting I try to retain the source collection, page and download URLs, the path inside an archive, page titles, alt text, category labels, and the time the archive observed it. A cryptic filename or a folder called away messages may be weak evidence, but it is still evidence worth keeping.
This is why the site says where a copy was found rather than confidently declaring who made it. Buddy icons were copied, renamed, and reposted with abandon. A later gallery may be the best surviving witness without being the artist or even the first distributor. New observations can be added to the catalog record without replacing the preserved object or laundering uncertainty into fact.
4. Treat duplicates as families, not rubbish
Duplication is part of the history of these files. The same artwork may survive byte-for-byte on several sites, or return with a new palette, encoder, crop, compression setting, transparent edge, or selection of animation frames. An exact SHA-256 match adds another source observation without storing the same bytes twice. A decoded-pixel hash finds files whose pixels and animation agree even when their encodings do not.
For near matches, the archive builds a conservative perceptual fingerprint from representative frames and checks it against color, dimensions, and animation structure. Similar files are grouped only when those gates agree. A quality score helps choose the clearest, most complete copy as the canonical display object, but the other files are not thrown away: their hashes, dimensions, frame counts, match method, and similarity distance remain visible as variants in the same family.
5. Add description in pencil, not ink
After accessioning, a separate homemade enricher leases work from the server over an authenticated HTTPS API. It downloads only the icons it is working on into an on-demand local cache and verifies each SHA-256 before showing anything to a local vision model. Animated icons are turned into contact sheets of representative frames so the model sees more than the opening blink.
The model attempts a short description, a denser visual inventory, visible text, subjects, actions, colors, style, composition, search phrases, and tags. All of that is useful for finding a tiny image in a very large wall of tiny images, but none of it is allowed to masquerade as original catalog data. Each review keeps its model, prompt, preprocessing method, metadata version, timing, structured facts, and raw result. When a better model or prompt comes along, I can run the work again and compare the new interpretation without touching the file or its provenance.
6. Moderate as a separate, revisable layer
Content-safety review runs in its own worker. A pinned local classifier performs initial safety screening over representative animation frames and helps decide what should be examined first; that screening cannot hide an icon. A detailed review then examines the prepared image and extracted text with a dedicated moderation model. Enrichment clues may help schedule or contextualize that work, but they do not become the verdict by repetition.
Only a successful detailed review under the current moderation rules can label an icon standard or sensitive. The scores, flags, record of the exact input, and model result stay attached as evidence, while stale and failed attempts remain part of the audit trail instead of silently winning. Sensitive images stay preserved but are not shown automatically, and review-pending pages stay out of sitemaps. A moderation decision can change without deleting the object it describes.
7. A small workshop with archival manners
This is not an institution with a climate-controlled loading dock. It is a hobby archive assembled from C#, old URLs, local models, rented APIs, whatever GPU time I can spare, and a great deal of supervision. Parts of the machinery are elegant; other parts are clearly held together because I needed to rescue one more GIF before dinner.
The museum-like part is the discipline underneath the improvisation: preserve the original object, record how it arrived, separate observation from interpretation, keep variants and failed judgments, and make consequential changes reversible. Stable public pages can gain better descriptions, new source records, duplicate relationships, and updated moderation without pretending the archive was complete the first time it went online.