Schema errors were reported but the cross-file checks still walked the
data as if it were well-formed, so a null list entry or a null item in
socialmedialinks crashed with an AttributeError and hid every other
error. Treat schema validation as a gate: report and skip the file.
Also skip the 'not listed in peoplelist.json' check when peoplelist.json
itself fails the schema, so the root cause is not buried.
The is_file() check passed on macOS for /images/bill.jpg because the
filesystem is case-insensitive, while GitHub Pages and the Actions runner
are not. Match against the actual images/ listing instead.
Add schema/person.schema.json and scripts/validate_people.py, run via a
pre-commit hook and a GitHub Actions job on pull requests. Checks:
- people/*.json match the schema (keys, types, item shapes)
- every peoplelist.json entry has a file and every file is listed once
- filenames are lowercase alphanumeric (two legacy names grandfathered)
- local image paths exist under images/
- link fields are http(s) with no surrounding whitespace
- text-only fields contain no HTML; maintext stays raw HTML by design
Warns (non-fatal) on gallery items with no title, which the page uses as
alt text. Adds a pip dependabot entry for scripts/requirements.txt.
- barnabyjack: gallery image is Barnaby_Jack3.jpg, not .png (404 on site)
- bradsmith, bruceesquibel: strip leading spaces from contribution urls
- larrytesler: drop template placeholder url (htps://www.cyberz.tech/)
Found by the new validator in scripts/validate_people.py.
The references fix in #331 covered only one of the render paths.
Apply the same DOM-construction pattern to personal info, obituary,
social media, contributions, gallery and the help-link fallbacks,
plus the people grid in index.html.
maintext is still rendered as HTML to preserve existing formatted
bios; flagged for a DOMPurify follow-up.
Use jQuery DOM construction ($("<a>").attr().text()) instead of string
concatenation for reference links, preventing HTML injection from
untrusted title values. Pass fallback issue URL through safeUrl().
Add a new "References" sidebar section for memorial tweets, obituaries,
news articles, tribute videos, and other external links about the
deceased. Populate references for 14 profiles with 30 entries that were
previously incorrectly placed in gallery (which is photos-only).
Gallery is for photos only. Removed tweet URLs, article links, video
links, reddit threads, and other non-image content from gallery arrays
across 13 person files. These references will be re-added when a
dedicated References section is implemented.
- Barnaby Jack: add TodayInInfoSec tweet to contributions
- Nolan Berry: add handle "d3vnull42", specify death date (9 Nov 2018)
- Maxx Redwine: specify birth (24 Jun 1964) and death (31 Jan 2011)
- Chip Meadows: add 2 memorial tweets to contributions
- Scott Sard: add wife's memorial tweet to contributions
- John Horton Conway: full bio covering Cambridge/Princeton career,
Game of Life, surreal numbers, group theory, COVID-19 death
- Michael Assante: full bio covering ICS/SCADA security career, NERC,
Idaho National Lab, ICS Cyber Kill Chain, GICSP, lymphoma
- Aaron Testerman: minimal bio from available data
- Eric Chavez: minimal bio, added memorial tweets to gallery
- Conor Fahey-Latrope: minimal bio noting BitTorrent employment
- Kelly Lum: add SummerCon memorial tweet/video, Dark Reading, Fox5 links
- Jaime Cochran: add Twitter handle, MuckRock FOIA, Reddit, BlogTalkRadio
- Aaron Swartz: add Wikipedia, MuckRock FOIA links
- Christian Wright: add SecLists posting, GoFundMe memorial
- Dan Kaminsky: add NYT obituary, Slashdot, The Parallax, talks list
- Michael Hawley: fix missing leading slashes on image paths, add NYT
obituary and MIT Media Lab memorial
- Glenn Eccard: add 3 memorial tweets from issue
- Chris Hurley: add Security Tribe and Goon Band to affiliations
- Ben Byer: add fail0verflow memorial blog post
- Bruce Esquibel: add textfiles and DethVeggie memorial tweets
- Geoffrey Bennett: add TICOM affiliation, DOJ letter contribution
- Joe Rogers: add 2 photos from issue #19 (provided by his widow),
set main image
- Robert Ashby: add photo from hackerphotos.com (issue #13)
- Vijay Gill: add obituary photo and gallery photo (issue #232),
set main image
- Don Blumenthal: fix wrong birth/death dates and contributions copied
from Matthew D Smith, rewrite bio from CircleID obituary
- Ben Preston: replace lorem ipsum placeholder with real bio text
- Deven Fore: point mainimage to existing photo instead of silhouette