How Cumulus Banner Example Files Were Laid Out on Disk

Disk layout of historical Cumulus banner examples: filename patterns, metric versus imperial folders, and why a gallery directory is not a skin pack.

Back to Cumulus weather software guides

A banner gallery on a weather site was a folder of example PNGs, not a second generator. Operators compared files by name and by directory: day versus night, metric versus imperial, 468×60 versus a square crop. This dotted URL, /projects.phpggbanner.gallery, is that disk-layout note. It does not teach contrast or unit typography.

The visual style guide—why night palettes fail after JPEG recompression, why both unit systems must show unit strings—is the slash twin, Cumulus banner variants as a visual style guide. This hostname does not rehost the historical ZIP, skin folders, or a click-to-download wall of banners. Sample files in archives, if they still exist, are other people’s pixels and often other people’s fonts.

Historical context

Personal weather sites of the 2000s published sample banners the way webrings published sample buttons. The Cumulus-host gallery sat next to the PHP GD project so examples and the renderer shared a family. Incoming forum links asked, in effect, “which file do I copy?” That is a path question. The generator’s setup—GD, TTF, cron—is the phpggbanner dotted article. The gallery URL answered how those examples were arranged so an operator could find the metric night strip without opening every PNG.

TNET does not claim a recovered, complete tree from this address. What follows is the layout grammar those galleries used, the grammar you should still use if you keep examples beside a live renderer. It is not a parts kit.

Keep examples away from live output

The first layout rule is isolation.

Live output is the PNG the generator writes on a timer, the file forums hot-link. It changes with the packet. It belongs in a directory the PHP user can write, with a stable name such as banner.png or banner-latest.png.

Examples are frozen historical pictures of a look. They must not share a filename with live output. If cron writes banner.png into the gallery folder, the “metric day” example becomes whatever the station is doing this afternoon, and the gallery stops being a gallery.

A workable split:

  • /banners/live/ — generated, writable, not listed as examples.
  • /banners/examples/ — read-only samples, no PHP write.

If the host cannot do two directories, use a prefix the generator will never choose: ex-metric-day-468x60.png versus banner.png. Prefix beats hope.

Do not store fonts, PHP, or realtime.txt inside the examples folder. Visitors who directory-list a gallery should see pictures, not a config file. Put fonts outside the web root, as the setup article already requires.

Filename grammar

A gallery file name should encode the rendering contract, not the weather.

Useful tokens, in a stable order:

  1. Rolebanner, avatar, thermo if you keep those canvases in one tree. An 80×80 crop of a 468×60 strip is not an avatar; give it a different role token or do not file it here.
  2. Unit systemsi or metric, and us or imperial. Pick one pair and keep it. cu versus fah is how people lose files.
  3. Paletteday, night, or neutral. Palette is chrome, not temperature.
  4. Geometry468x60, 234x60, 88x31 if you actually shipped those IAB-era sizes. Do not imply a size in a folder name and contradict it in pixels.
  5. Variantdense, sparse, wind if density families existed. Optional.

Example: banner-metric-day-468x60.png. The numbers inside the image are a snapshot. They are not part of the filename. Encoding 22p4C in the name turns every new example into a unique file and destroys compare-by-name.

Avoid spaces, mixed case, and final2-really.png. Shared hosting and Windows-to-Linux copies still stumble on those.

A neighboring URL, /projects.phpggbanner.gallery.su, looks like a language or regional fork in the historical tree. If you keep a second locale’s examples, give them a locale token (su, en) in the name or a sibling folder. Do not overwrite banner-metric-day-468x60.png with a translated chrome and keep the same name.

Metric versus imperial as folders

Unit system is the split that most often became directories rather than prefixes, because operators copied one folder to the web host and left the other on disk.

A typical split:

examples/
  metric/
    day-468x60.png
    night-468x60.png
  imperial/
    day-468x60.png
    night-468x60.png

Inside each unit folder, filenames can drop the unit token because the directory already carries it. They must not drop the palette or the size.

Rules that keep the split honest:

  • The two folders are the same layout family. Same files present, same geometries. If imperial has rain and metric does not, you no longer have a unit pair; you have two products.
  • Do not use US/, UK/, EU/ as substitutes for unit folders. Geography is not a unit system. A Canadian station may publish °C; a UK station may still use mph. Folder names should follow the packet’s unit tokens (C/F, mm/in, hPa/in), not the flag.
  • Generated live output usually has one unit system: the station’s configured units, or a visitor preference applied at draw time. Do not have cron write into both examples/metric/ and examples/imperial/. If you need both live, use live/metric.png and live/imperial.png outside the example tree, fed from two processed tag files or from unit tokens in one packet.

Rain is the filename that overflows first. rain-metric and rain-imperial may need a slightly wider geometry. If they do, the geometry token must change. Do not clip the unit in the imperial file and keep the name 468x60.

Backgrounds versus finished examples

Skin packs confused three layers on disk:

  1. Background plates — empty chrome, maybe a logo, no numerals. Source assets.
  2. Finished examples — plates plus painted numbers, used for the gallery page.
  3. Fonts — TTF files, which are not gallery images.

Keep plates in examples/_bg/ or outside the web tree entirely. A visitor who saves night-468x60.png as a “skin” may be saving a finished example with someone else’s temperature still in the pixels. That is a historical observation baked into a PNG, not a template. The style-guide article says not to digitize those numbers; the disk layout should make it obvious which files are plates (no digits in the image, _bg in the path) and which are screenshots.

If you cannot separate plates from finished files, do not call the folder skins. Call it examples and treat every PNG as a figure, not as a drop-in background.

What a gallery directory is not

It is not a download cabinet. Showing a path grammar does not grant redistribution rights in the PNGs or the fonts.

It is not the generator. PHP that reads tags and writes live/banner.png lives beside this tree, not inside examples/.

It is not a climate archive. Filenames must not be used as a time series. If you need the numbers, keep the tag file or realtime.txt, not a folder of dated banners named by temperature.

Directory listing enabled on examples/ is a convenience for the operator and a leak of whatever else you parked there. Disable listing or put an index that only links the intended tiles.

Practical checklist

  1. Split live/ (writable) from examples/ (read-only).
  2. Encode role, units, palette, and geometry in the path or filename; do not encode the temperature.
  3. Make metric and imperial trees isomorphic: same sizes, same palettes, both with unit strings in the pixels.
  4. Name folders by unit system, not by country.
  5. Keep background plates and TTFs out of the public example listing.
  6. Do not let cron overwrite example names.
  7. Treat /projects.phpggbanner.gallery.su as a sibling locale tree if you still use that path, not as a replacement folder.
  8. Do not rehost a recovered gallery ZIP on this hostname.

Modern relevance

Object storage and static hosts still need prefixes that distinguish live artifacts from documentation images. A CDN that caches banner.png for a day will serve a historical strip if you also use that name for examples. The layout grammar above is the same discipline as labeling observed versus derived information.

TNET’s public explanation of those labels is how the service works. A gallery folder is a small case: the look is derived; the numerals, if honest, were observed at a stated time—and that time belongs in the image or caption, not in a misleading live filename. The Cumulus hub lists related projects.

Sources