How it works: IO links have a project name in the URL, but it also works if you remove everything except the ID number.
So, a Perl script using WWW::Mechanize first visits the Projects page "sorted by date" and identifies the highest ID in use. Then, it repeatedly chooses a random number and tries a GET to see if that page exists. If no 404 is returned, it gives the URL back.
A simple PHP wrapper calls the Perl script and returns the URL in a Location: header.
Bookmarked! I like this randomizer very much. Do you think it would be good to filter out not only the missing projects, but the projects without a picture too?
Yes - each potential is checked for HTTP header errors before returning to the client. Source is available! Check the left sidebar (links section).
One interesting thing about this is that apparently the same IDs are used for Project and Hackerspaces. So, sometimes you get passed to a random hackerspace, and sometimes a random project.
Would hackaday's API for GET /projects be easier for this? https://dev.hackaday.io/doc/api/get-projects