Updated manifest as per recent file changes. Updated winner `.winner.json` to reflect the manifest changes. Added [bin/all_run.sh](bin/all_run.sh) tool to run a command over all winning entries. These tools had slight improvements in the help usage message: * bin/gen-author.sh VERSION="1.3.1 2024-01-16" * bin/gen-inventory.sh VERSION="1.0.1 2024-01-16" * bin/pandoc_wrapper.sh VERSION="1.3.1 2024-01-16" * bin/subst.default.sh VERSION="1.1.1 2024-01-16" * bin/subst.winner-index.sh VERSION="1.1.1 2024-01-16" The `bin/readme2index.sh` tool was improved so that if the `index.html` file exists and the tool forms the exact same content, then the file `index.html` file is NOT touched. * bin/readme2index.sh VERSION="1.1 2024-01-16" We used the following command to generate `index.html` files for all winning entries: ```sh bin/all_run.sh -v 3 bin/readme2index.sh ``` NOTE: We have not (yet) built HTML files above the winner directory level (e.g., no year level nor top level HTML), nor have be built non-index HTML files for winners. NOTE: By default we are running `pandoc(1)` with: ``` --fail-if-warnings=true ``` This means that any problems with markdown to HTML generates an error. This is done to be sure that the HTML conversion is clean. We had to fix the following `README.md` files: * `2000/rince/README.md` The reference [^2] was never used. We made a guess that [^2] applies to the same spot as [^1]. Perhaps there is a better spot where [^2] applies? NOTE: For every reference, there MUST be some place where that reference is used. * 2012/vik/README.md The string "$...$" is assumed to be a TeX encoded string. NOTE: Every "$..$" needs to be backslashed as in "\$..\$". * 2018/burton1/README.md The reference [2] was duplicated. We changed the second [2] to [3]. NOTE: Every reference needs to have a unique number. * 2020/carlini/README.md The string "$...$" is assumed to be a TeX encoded string. NOTE: Every "$..$" needs to be backslashed as in "\$..\$". We also found 2 errors in the `author/author_handle.json` file set: * author/Anonymous_2001.json The `author/Anonymous_2001.json` file was missing. * author/Jari_Arkko.json The winner ID for `1989_jar.1` had a typo.
author directory
The author/ directory contains a JSON file for each author of at
least one winning IOCCC entry. For each author, there is a JSON
file with the following name format:
author/author_handle.json
where author_handle is defined below.
author_handle
Each author of a winning IOCCC entry has an assigned author_handle,
an IOCCC unique string that matches this regex:
^[0-9a-z][0-9a-z_]*$
The author_handle, by default, is derived from the name of the author.
While there is a algorithm that maps the name of the author
(which can contain any UTF-8 characters) into a default
author_handle string, those who submit an entry to the IOCCC
are free to choose a different author_handle string.
An author who has won a previous IOCCC is encouraged to reuse their
author_handle so that new winning entries will be associated with the same
author or authors.
anonymous author_handle's
For an anonymous author, their handle is one of these forms:
Anonymous_year
or:
Anonymous_year.digits
The latter form is in case there are more than one anonymous author in a given year.
Anonymous author_handle's match this regexp:
Anonymous_[0-9][0-9][0-9][0-9][.0-9]*$
author_handle.json JSON syntax
The author_handle.json must have the following JSON members:
"no_comment" : "mandatory comment: because comments were removed from the original JSON spec",
"author_JSON_format_version" : "0.1 2023-05-22",
There must be the following JSON members:
"full_name" : "Your Full Name",
"sort_word" : "lowercaselast",
"location_code" : "XX",
"location_name" : "Formal location name",
"full_name"value is the author's formal full name."sort_word"value is the author's last name, mapped into lower case ASCII, as a JSON encoded string"location_code"value is a 2 UPPER CASE ISO 3166 code selected by the author"location_name"value is the formal name corresponding to the"location_code", in JSON encoded string form
A "sort_word" that is used to determine the position within the winners.html file,
an author and the winners they submitted are to be listed.
A sort_word matches this regexp:
^[a-z][0-9a-z]*
And there must be the following JSON members:
"email" : "user0@example.com",
"url" : "https://a.host0.example.com/index.html",
"alt_url" : "https://b.host0.example.com/index.html",
"deprecated_twitter_handle" : "@something",
"mastodon" : "@mastodon0@example.com",
"mastodon_url" : "https://example.org/@mastodon0",
"github" : "@github0",
"affiliation" : "an affiliation group",
"email"value is the author's email address as a JSON encoded string, ornullif not given"url"value is the author's home page URL as a JSON encoded string, ornullif not given"alt_url"value is the author's alternate or second URL as a JSON encoded string, ornullif not given"deprecated_twitter_handle"value is the author's twitter handle as a JSON encoded string, starting with "@", ornullif not given"mastodon"value is the author's Mastodon handle in "@user@server" form as a JSON encoded string, ornullif not given"mastodon_url"value is the URL as a JSON encoded string of the author's Mastodon page, ornullif not given"github"value is the author's GitHub username as a JSON encoded string, starting with "@", ornullif not given"affiliation"is the author's affiliation as a JSON encoded string, ornullif not given
If an author does not have one of the previous set of values, or wishes to not disclose it / keep it anonymous,
then the JSON value can be null. For example:
"email" : null,
"url" : null,
"alt_url" : null,
"deprecated_twitter_handle" : null,
"mastodon" : null,
"mastodon_url" : null,
"github" : null,
"affiliation" : null,
NOTE: The JSON value of null is NOT enclosed in double quotes.
The "winning_entry_set" is an array of JSON members that indicate
each of the IOCCC winning entries that the author is the author of. :-)
{ "winner_id" : "YYYY_dirname" }
The "YYYY_dirname" is a winner ID in JSON encoded string form.
Here "YYYY" is the IOCCC year, and "dirname" is the directory name
of the winning entry under the given year directory.
NOTE: Due to mis-features in the JSON spec, the final JSON member must NOT be followed by a comma. For example:
"winning_entry_set" : [
{ "winner_id" : "1987_somedir" },
{ "winner_id" : "2020_entrydir" },
{ "winner_id" : "2024_dirname" }
]
author_handle.json example
Here is a fictitious author_handle.json example:
{
"no_comment" : "mandatory comment: because comments were removed from the original JSON spec",
"author_JSON_format_version" : "1.0 2023-06-10",
"author_handle" : "first0_last0",
"full_name" : "First Middle Last",
"sort_word" : "lowercaselast",
"location_code" : "AU",
"location_name" : "Australia",
"email" : "user0@example.com",
"url" : "https://a.host0.example.com/index.html",
"alt_url" : "https://b.host0.example.com/index.html",
"deprecated_twitter_handle" : "@something",
"mastodon" : "@mastodon0@example.com",
"mastodon_url" : "https://example.org/@mastodon0",
"github" : "@github0",
"affiliation" : "an affiliation group",
"winning_entry_set" : [
{ "winner_id" : "1987_somedir" },
{ "winner_id" : "2020_entrydir" },
{ "winner_id" : "2024_dirname" }
]
}
Here is fictitious author_handle.json example where all entries that may be withheld are null:
{
"no_comment" : "mandatory comment: because comments were removed from the original JSON spec",
"author_JSON_format_version" : "1.0 2023-06-10",
"author_handle" : "first0_last0",
"full_name" : "First Middle Last",
"sort_word" : "lowercaselast",
"location_code" : "AU",
"location_name" : "Australia",
"email" : null,
"url" : null,
"alt_url" : null,
"deprecated_twitter_handle" : null,
"mastodon" : null,
"mastodon_url" : null,
"github" : null,
"affiliation" : null,
"winning_entry_set" : [
{ "winner_id" : "1987_somedir" },
{ "winner_id" : "2020_entrydir" },
{ "winner_id" : "2024_dirname" }
]
}
NOTE to authors
If you wish to update / modify information about yourself, you need to
modify your author_handle.json file via a GitHub pull
request.