Plan: “Wildlife” Section for hehao98.github.io
Plan: “Wildlife” Section for hehao98.github.io
Status: implemented (first batch) — the /wildlife/ page is live in the repo with 39 photos covering outings from 2026-02-04 through 2026-03-29 plus 2026-07-05. Photos from DSCN0850 onward (2026-03-31 … 2026-07-05, ~120 files) are not yet reviewed — they will be added in a later pass.
What was built
| Path | Purpose |
|---|---|
scripts/build_wildlife_images.py | Resizes originals from D:\Photos\Wildlife into web/ (1600 px) + thumb/ (400 px); manifest mode extracts EXIF dates |
images/wildlife/{web,thumb}/*.jpg | Derivatives for the 39 keepers (~12.5 MB total); originals never enter the repo |
_data/wildlife.yml | Single source of truth: per-photo species/date/location + locations table |
_pages/wildlife.md | The /wildlife/ page: species catalog, filterable gallery, lightbox, map |
_layouts/wildlife.html | Full-width layout (no author sidebar) |
assets/js/wildlife.js | Filters, lightbox, Leaflet map init (vanilla JS, no plugins) |
assets/css/wildlife.css | Gallery/catalog/lightbox styles |
_data/navigation.yml | “Wildlife” added to the top navigation |
GitHub Pages safe-mode compatible: Liquid + client-side JS only. Leaflet is loaded from CDN only when at least one location has lat/lng; until then the map section shows a “coming soon” note.
How to add the remaining photos later
- Review the photo, decide keep/drop, identify species.
- Add an entry to
_data/wildlife.yml(file,date,species,scientific,group,location,notes). - Run
python scripts/build_wildlife_images.py build— only new entries are generated; commit the new derivatives.
Not yet reviewed: DSCN0850–DSCN2217 (2026-03-31, 04-08, 04-09, 04-12/13, 04-17, 04-25, 04-27/28/29, 05-28…05-31, 06-02/03/04, 06-07, 06-13, 06-25, 07-05). Review notes so far live in the session scratchpad review.csv.
How to add locations (manual step, pending)
Photos have no GPS EXIF. In _data/wildlife.yml:
- Fill the
locations:table (key, name, lat, lng) — one entry per place. - Set each photo’s
location:to the matching key (one place per outing date, so this is quick with editor find/replace on dates). - The map, gallery captions, and lightbox pick the names up automatically.
Consider location granularity: precise park pins vs. city-level, especially for photos taken near home.
Keep-list (proposed — please review)
67 photos reviewed, 39 kept / 28 dropped. Rule: keep the best shot(s) per species per outing; drop blurry, obstructed, or near-duplicate frames.
Kept (in the site now)
| File | Species | Date | Note |
|---|---|---|---|
| DSCN0030 | Northern Cardinal | 2026-02-04 | male on power line |
| DSCN0040 | Northern Cardinal | 2026-02-06 | female |
| DSCN0049 | Hairy Woodpecker ⚠ | 2026-02-06 | verify Hairy vs Downy |
| DSCN0061 | Pileated Woodpecker | 2026-02-06 | |
| DSCN0066 | Fox Squirrel | 2026-02-09 | |
| DSCN0198 | Red-bellied Woodpecker | 2026-02-15 | female |
| DSCN0210 | Red-bellied Woodpecker | 2026-02-15 | male, excellent |
| DSCN0233 | Eastern Gray Squirrel | 2026-02-15 | |
| DSCN0252 | White-tailed Deer | 2026-02-22 | pair grazing |
| DSCN0265 | White-tailed Deer | 2026-02-22 | close side view |
| DSCN0267 | Bat (species uncertain) ⚠ | 2026-02-22 | possibly Big Brown Bat — confirm |
| DSCN0332 | Blue Jay | 2026-03-01 | two jays |
| DSCN0339 | House Sparrow | 2026-03-01 | flock record |
| DSCN0370 | Eastern Gray Squirrel | 2026-03-02 | park bench |
| DSCN0373 | Eastern Gray Squirrel | 2026-03-02 | close profile |
| DSCN0553 | Mourning Cloak | 2026-03-16 | butterfly |
| DSCN0565 | Eastern Phoebe ⚠ | 2026-03-16 | soft focus; only phoebe record |
| DSCN0594 | Canada Goose | 2026-03-16 | pair by creek |
| DSCN0645 | Mourning Dove | 2026-03-20 | golden hour, excellent |
| DSCN0648 | American Robin | 2026-03-20 | |
| DSCN0673 | Red-tailed Hawk | 2026-03-20 | on building cornice |
| DSCN0746 | Cedar Waxwing | 2026-03-27 | |
| DSCN0752 | Eastern Towhee | 2026-03-27 | close-up |
| DSCN0759 | Eastern Towhee | 2026-03-27 | best of set |
| DSCN0766 | Red-winged Blackbird | 2026-03-27 | epaulet visible |
| DSCN0778 | Golden-crowned Kinglet | 2026-03-27 | |
| DSCN0781 | Northern Cardinal | 2026-03-27 | vs blue sky |
| DSCN0782 | Red-eared Slider | 2026-03-27 | clean profile |
| DSCN0787 | Muscovy Duck (domestic) | 2026-03-27 | pond pair |
| DSCN0788 | Mallard | 2026-03-27 | male close-up |
| DSCN0797 | Red-eared Slider | 2026-03-27 | red stripe clear |
| DSCN0801 | Red-eared Slider | 2026-03-27 | stretch pose, excellent |
| DSCN0816 | American Bison | 2026-03-27 | adult + calf |
| DSCN0819 | American Bison | 2026-03-27 | with reddish calf |
| DSCN0825 | American Bison | 2026-03-27 | herd scene |
| DSCN0832 | Red-eared Slider | 2026-03-27 | 7 turtles basking |
| DSCN0838 | Eastern Bluebird | 2026-03-29 | male, slightly soft |
| 1f42c39b… | Eastern Cottontail | 2026-04-24* | *no EXIF; file date used |
| DSCN2218 | Grey-headed Swamphen | 2026-07-05 | wetland reeds |
⚠ = species ID needs your confirmation.
Dropped (reasons)
- Blur / focus: DSCN0045, 0212 (also uncertain ID), 0565 kept instead of none, 1258 (rabbit hidden in leaf litter)
- Obstructed / subject hidden: DSCN0193, 0194, 0238, 0293, 0328, 0830, 0841
- Near-duplicates (better frame kept): DSCN0187 (→0781), 0254, 0256 (→0252/0265), 0372 (→0373), 0564 (→0553), 0749 (→0746), 0751 (→0752/0759), 0765, 0767 (→0766), 0796, 0798, 0799, 0800 (→0782/0797/0801), 0814, 0820 (→0816/0819), 0839 (→0838)
- Distant / poor scene: DSCN0344 (goose flight silhouettes)
- Domestic park ducks (excluded by default — say the word to include): DSCN0791, 0806, 0831. (DSCN0787 Muscovy pair was kept as it’s a distinctive species record; drop it too if you prefer wild-only.)
To restore any dropped photo: add its entry to _data/wildlife.yml and rerun the build script.
Remaining open items
- Confirm the ⚠ species IDs above.
- Fill in locations (see above).
- Review the remaining ~120 photos (DSCN0850+) and extend the catalog.
- Optionally rename
1f42c39b10c72b25494118c69c771634.JPGon the D: drive to something likeDSC_rabbits_20260424.jpg(update the YAML entry to match). - Local Jekyll build was not possible (no Ruby on this machine); the site was verified with static checks (YAML validity, image presence, Liquid review). Verify the GitHub Pages build after pushing.
