Merge pull request #2719 from xexyl/fmt-faq

More format fixes in FAQ
This commit is contained in:
Landon Curt Noll authored and GitHub committed 2024-10-23 11:38:09 -07:00
commit 45be4e0a0b
2 files changed
+225 -181

No files matched your search

+113 -70
View File
@@ -1125,7 +1125,9 @@ of the same theme.</p>
previous IOCCC entries make it more challenging to be successful.</p> previous IOCCC entries make it more challenging to be successful.</p>
<p>It is also important to note that the <a href="next/guidelines.html">guidelines</a> often <p>It is also important to note that the <a href="next/guidelines.html">guidelines</a> often
state something along the lines of:</p> state something along the lines of:</p>
<pre><code> We tend to dislike programs that: are similar to previous winning entries.</code></pre> <blockquote>
<p>We tend to dislike programs that: are similar to previous winning entries.</p>
</blockquote>
<p><strong>FAIR WARNING</strong>: Be sure to <strong>clearly explain</strong> near the beginning <p><strong>FAIR WARNING</strong>: Be sure to <strong>clearly explain</strong> near the beginning
of your <code>remarks.md</code> file, see the of your <code>remarks.md</code> file, see the
FAQ on “<a href="#remarks_md">remarks.md</a>”, FAQ on “<a href="#remarks_md">remarks.md</a>”,
@@ -2151,8 +2153,8 @@ FAQ on “<a href="#validating_json">validating JSON documents</a>”.</p>
</div> </div>
<p>An <code>author_handle</code> is string that refers to a given author and is unique to the <p>An <code>author_handle</code> is string that refers to a given author and is unique to the
IOCCC. Each author has exactly one <code>author_handle</code>.</p> IOCCC. Each author has exactly one <code>author_handle</code>.</p>
<p>For each <code>author_handle</code>, there will be a JSON file of the form:</p> <p>For each <code>author_handle</code>, there will be a JSON file of the form:
<pre><code> author/author_handle.json</code></pre> <code>author/author_handle.json</code>.</p>
<p>See the <p>See the
FAQ on “<a href="#fix_author">fixing author information</a>” FAQ on “<a href="#fix_author">fixing author information</a>”
for information about how to update for information about how to update
@@ -2183,10 +2185,8 @@ desire.</p>
<p>An <code>author</code> who has won a previous IOCCC is encouraged to reuse their <p>An <code>author</code> who has won a previous IOCCC is encouraged to reuse their
<code>author_handle</code> so that new winning entries can be associated with the same <code>author_handle</code> so that new winning entries can be associated with the same
author.</p> author.</p>
<p>For an anonymous <code>author</code>, their handle is one of these forms:</p> <p>For an anonymous <code>author</code>, their handle is one of the form of <code>Anonymous_year</code>
<pre><code> Anonymous_year</code></pre> or <code>Anonymous_year.digits</code>.</p>
<p>or:</p>
<pre><code> Anonymous_year.digits</code></pre>
<p>The latter form is in case there are more than one anonymous author in a given <p>The latter form is in case there are more than one anonymous author in a given
year.</p> year.</p>
<p><strong>NOTE</strong>: even if the directory name is not <code>anonymous</code> the above rules apply as in <p><strong>NOTE</strong>: even if the directory name is not <code>anonymous</code> the above rules apply as in
@@ -2217,8 +2217,7 @@ IOCCC winning entry.</p>
contact an authors of an IOCCC entry, they will consult the contents contact an authors of an IOCCC entry, they will consult the contents
of the author’s JSON file for ways to contact them.</p> of the author’s JSON file for ways to contact them.</p>
<p>Each author of an IOCCC winning entry has their own <code>author_handle.json</code> file <p>Each author of an IOCCC winning entry has their own <code>author_handle.json</code> file
of the form:</p> of the form <code>author/author_handle.json</code>.</p>
<pre><code> author/author_handle.json</code></pre>
<p>where <em>author_handle</em> is an author handle. See <p>where <em>author_handle</em> is an author handle. See
FAQ on “<a href="#author_handle_faq">author handle</a>” FAQ on “<a href="#author_handle_faq">author handle</a>”
for more information about an author handles.</p> for more information about an author handles.</p>
@@ -2227,9 +2226,9 @@ for more information about an author handles.</p>
See <a href="https://www.json.org/json-en.html" class="uri">https://www.json.org/json-en.html</a> for information on the <em>So-called JSON See <a href="https://www.json.org/json-en.html" class="uri">https://www.json.org/json-en.html</a> for information on the <em>So-called JSON
spec</em>.</p> spec</em>.</p>
<p>A good way to understand the JSON file contents of a <code>author_handle.json</code> file <p>A good way to understand the JSON file contents of a <code>author_handle.json</code> file
is to look at an example, the <code>author_handle.json</code> file for Yusuke Endoh:</p> is to look at an example, for instance the <code>author_handle.json</code> file for Yusuke
<pre><code> author/Yusuke_Endoh.json</code></pre> Endoh, <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/author/Yusuke_Endoh.json">author/Yusuke_Endoh.json</a>.</p>
<p>As of <em>Thu Nov 30 23:51:12 UTC 2023</em>, the contents was as follows:</p> <p>As of <em>Thu Nov 30 23:51:12 UTC 2023</em>, it was:</p>
<pre><code> { <pre><code> {
&quot;no_comment&quot; : &quot;mandatory comment: because comments were removed from the original JSON spec&quot;, &quot;no_comment&quot; : &quot;mandatory comment: because comments were removed from the original JSON spec&quot;,
&quot;author_JSON_format_version&quot; : &quot;1.0 2023-06-10&quot;, &quot;author_JSON_format_version&quot; : &quot;1.0 2023-06-10&quot;,
@@ -2269,7 +2268,7 @@ is to look at an example, the <code>author_handle.json</code> file for Yusuke En
<p><strong>NOTE</strong>: if you need to just check the validity of a JSON document then see the <p><strong>NOTE</strong>: if you need to just check the validity of a JSON document then see the
FAQ on “<a href="#validating_json">validating JSON documents</a>”. Taking that FAQ in mind, FAQ on “<a href="#validating_json">validating JSON documents</a>”. Taking that FAQ in mind,
if you wish to validate every JSON file in <code>author/</code> then you could do so like:</p> if you wish to validate every JSON file in <code>author/</code> then you could do so like:</p>
<pre class="&lt;!--sh--&gt;"><code> for auth in *.json; do jparse -q &quot;$auth&quot; || echo &quot;$auth is invalid JSON&quot; ; done</code></pre> <pre class="&lt;!--sh--&gt;"><code> for auth in *.json; do jparse -q &quot;$auth&quot; || echo &quot;$auth is invalid JSON&quot; ; done</code></pre>
<p>If you see any output then it will say which file or files are invalid JSON <p>If you see any output then it will say which file or files are invalid JSON
(this should not actually happen, however).</p> (this should not actually happen, however).</p>
<p>See the <p>See the
@@ -2280,14 +2279,14 @@ for now to location and/or install the <code>jparse(1)</code> command.</p>
</div> </div>
<p>We now will walk thru the above JSON document looking at various JSON members:</p> <p>We now will walk thru the above JSON document looking at various JSON members:</p>
<h5 id="no_comment">no_comment</h5> <h5 id="no_comment">no_comment</h5>
<pre><code> &quot;no_comment&quot; : &quot;mandatory comment: because comments were removed from the original JSON spec&quot;,</code></pre> <pre><code> &quot;no_comment&quot; : &quot;mandatory comment: because comments were removed from the original JSON spec&quot;</code></pre>
<p>Because the authors of the so-called JSON spec removed the ability to use comments in JSON <p>Because the authors of the so-called JSON spec removed the ability to use comments in JSON
(for reason(s) that seem to be less than credible), the IOCCC mandates this <em>JSON member</em> (for reason(s) that seem to be less than credible), the IOCCC mandates this <em>JSON member</em>
be present in all IOCCC related JSON files.</p> be present in all IOCCC related JSON files.</p>
<p>There <strong>MUST</strong> be one and only one <code>no_comment</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> <p>There <strong>MUST</strong> be one and only one <code>no_comment</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong>
be the exact <em>JSON string</em> as shown above.</p> be the exact <em>JSON string</em> as shown above.</p>
<h5 id="author_json_format_version">author_JSON_format_version</h5> <h5 id="author_json_format_version">author_JSON_format_version</h5>
<pre><code> &quot;author_JSON_format_version&quot; : &quot;1.0 2023-06-10&quot;,</code></pre> <pre><code> &quot;author_JSON_format_version&quot; : &quot;1.0 2023-06-10&quot;</code></pre>
<p>This <em>JSON member</em> holds the format version of the <code>author_handle.json</code> JSON file.</p> <p>This <em>JSON member</em> holds the format version of the <code>author_handle.json</code> JSON file.</p>
<p>There <strong>MUST</strong> be one and only one <code>author_JSON_format_version</code> <p>There <strong>MUST</strong> be one and only one <code>author_JSON_format_version</code>
<em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> be a <em>JSON string</em>.</p> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> be a <em>JSON string</em>.</p>
@@ -2299,7 +2298,7 @@ of the these files is modified: and then only those who maintain the
<a href="https://www.ioccc.org">official IOCCC website</a> would be the one to do this <a href="https://www.ioccc.org">official IOCCC website</a> would be the one to do this
in conjunction with changes to <a href="bin/index.html">bin directory tools</a>.</p> in conjunction with changes to <a href="bin/index.html">bin directory tools</a>.</p>
<h5 id="author_handle">author_handle</h5> <h5 id="author_handle">author_handle</h5>
<pre><code> &quot;author_handle&quot; : &quot;Yusuke_Endoh&quot;,</code></pre> <pre><code> &quot;author_handle&quot; : &quot;Yusuke_Endoh&quot;</code></pre>
<p>This <em>JSON member</em> holds the author handle of the author.</p> <p>This <em>JSON member</em> holds the author handle of the author.</p>
<p>There <strong>MUST</strong> be one and only one <code>author_handle</code> <em>JSON member</em> <p>There <strong>MUST</strong> be one and only one <code>author_handle</code> <em>JSON member</em>
and the <em>JSON value</em> <strong>MUST</strong> be a <em>JSON string</em> that is also a value author handle.</p> and the <em>JSON value</em> <strong>MUST</strong> be a <em>JSON string</em> that is also a value author handle.</p>
@@ -2315,14 +2314,14 @@ without the trailing <code>.json</code>) of the <code>author_handle.json</code>
a change of <em>author_handle</em> <em>JSON value</em> would also require the a change of <em>author_handle</em> <em>JSON value</em> would also require the
<code>author_handle.json</code> file to also be renamed.</p> <code>author_handle.json</code> file to also be renamed.</p>
<h5 id="full_name">full_name</h5> <h5 id="full_name">full_name</h5>
<pre><code> &quot;full_name&quot; : &quot;Yusuke Endoh&quot;,</code></pre> <pre><code> &quot;full_name&quot; : &quot;Yusuke Endoh&quot;</code></pre>
<p>This <em>JSON member</em> holds the full name of the author.</p> <p>This <em>JSON member</em> holds the full name of the author.</p>
<p>There <strong>MUST</strong> be one and only one <code>full_name</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> <p>There <strong>MUST</strong> be one and only one <code>full_name</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong>
be a <em>JSON string</em>.</p> be a <em>JSON string</em>.</p>
<p>The full name of an author may use non-ASCII characters so long as the <p>The full name of an author may use non-ASCII characters so long as the
full name is properly encoded as a <em>JSON string</em>.</p> full name is properly encoded as a <em>JSON string</em>.</p>
<h5 id="sort_word">sort_word</h5> <h5 id="sort_word">sort_word</h5>
<pre><code> &quot;sort_word&quot; : &quot;endoh&quot;,</code></pre> <pre><code> &quot;sort_word&quot; : &quot;endoh&quot;</code></pre>
<p>This <em>JSON member</em> holds the string that will be used to sort the author.</p> <p>This <em>JSON member</em> holds the string that will be used to sort the author.</p>
<p>There <strong>MUST</strong> be one and only one <code>sort_word</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> <p>There <strong>MUST</strong> be one and only one <code>sort_word</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong>
be a <em>JSON string</em>. Moreover the string <strong>MUST</strong> be a lower case ASCII be a <em>JSON string</em>. Moreover the string <strong>MUST</strong> be a lower case ASCII
@@ -2336,7 +2335,7 @@ wishes to be found in the <code>/authors.html</code> file under a different
string, such as if they wish to be listed under their first name string, such as if they wish to be listed under their first name
or their username, then they may change this accordingly.</p> or their username, then they may change this accordingly.</p>
<h5 id="location_code">location_code</h5> <h5 id="location_code">location_code</h5>
<pre><code> &quot;location_code&quot; : &quot;JP&quot;,</code></pre> <pre><code> &quot;location_code&quot; : &quot;JP&quot;</code></pre>
<p>This <em>JSON member</em> holds the string that is the <p>This <em>JSON member</em> holds the string that is the
<a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Decoding_table">ISO 3166-1 alpha-2 code</a> <a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Decoding_table">ISO 3166-1 alpha-2 code</a>
of the author’s location or country.</p> of the author’s location or country.</p>
@@ -2353,38 +2352,38 @@ ISO 3166-1 alpha-2 codes belong to locations that are not technically
a country, such as “Antarctica” or a User-assigned code.</p> a country, such as “Antarctica” or a User-assigned code.</p>
<p>If the author wishes to not specify a location, they should select <strong>XX</strong>.</p> <p>If the author wishes to not specify a location, they should select <strong>XX</strong>.</p>
<h5 id="email">email</h5> <h5 id="email">email</h5>
<pre><code> &quot;email&quot; : &quot;mame@ruby-lang.org&quot;,</code></pre> <pre><code> &quot;email&quot; : &quot;mame@ruby-lang.org&quot;</code></pre>
<p>This <em>JSON member</em> holds the email address of the author, or is the value null.</p> <p>This <em>JSON member</em> holds the email address of the author, or is the value null.</p>
<p>There <strong>MUST</strong> be one and only one <code>email</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> <p>There <strong>MUST</strong> be one and only one <code>email</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong>
be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>.</p> be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>.</p>
<p>If the author wishes to not specify an email address, or if the email address is <p>If the author wishes to not specify an email address, or if the email address is
unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON member</em>. unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON member</em>.
For example:</p> For example:</p>
<pre><code> &quot;email&quot; : null,</code></pre> <pre><code> &quot;email&quot; : null</code></pre>
<p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p> <p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p>
<h5 id="url">url</h5> <h5 id="url">url</h5>
<pre><code> &quot;url&quot; : &quot;https://mametter.hatenablog.com&quot;,</code></pre> <pre><code> &quot;url&quot; : &quot;https://mametter.hatenablog.com&quot;</code></pre>
<p>This <em>JSON member</em> holds the URL of the author’s home page.</p> <p>This <em>JSON member</em> holds the URL of the author’s home page.</p>
<p>There <strong>MUST</strong> be one and only one <code>url</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> <p>There <strong>MUST</strong> be one and only one <code>url</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong>
be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>.</p> be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>.</p>
<p>If the author wishes to not specify a URL or if the URL is <p>If the author wishes to not specify a URL or if the URL is
unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON
member</em>. For example:</p> member</em>. For example:</p>
<pre><code> &quot;url&quot; : null,</code></pre> <pre><code> &quot;url&quot; : null</code></pre>
<p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p> <p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p>
<h5 id="alt_url">alt_url</h5> <h5 id="alt_url">alt_url</h5>
<pre><code> &quot;alt_url&quot; : null,</code></pre> <pre><code> &quot;alt_url&quot; : null</code></pre>
<p>This <em>JSON member</em> holds an alternate or 2nd URL a home page for the author.</p> <p>This <em>JSON member</em> holds an alternate or 2nd URL a home page for the author.</p>
<p>There <strong>MUST</strong> be one and only one <code>alt_url</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> <p>There <strong>MUST</strong> be one and only one <code>alt_url</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong>
be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>.</p> be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>.</p>
<p>In some cases the author may wish to record a special URL for their IOCCC entry, <p>In some cases the author may wish to record a special URL for their IOCCC entry,
or a 2nd URL such as a work or school or personal home page. For example, or a 2nd URL such as a work or school or personal home page. For example,
Cody as of <em>Thu Nov 30 23:51:12 UTC 2023</em> used:</p> Cody as of <em>Thu Nov 30 23:51:12 UTC 2023</em> used:</p>
<pre><code> &quot;alt_url&quot; : &quot;https://ioccc.xexyl.net&quot;,</code></pre> <pre><code> &quot;alt_url&quot; : &quot;https://ioccc.xexyl.net&quot;</code></pre>
<p>If the author wishes to not specify an alternate URL, or if the alternate URL is <p>If the author wishes to not specify an alternate URL, or if the alternate URL is
unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON
member</em>. For example:</p> member</em>. For example:</p>
<pre><code> &quot;alt_url&quot; : null,</code></pre> <pre><code> &quot;alt_url&quot; : null</code></pre>
<p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p> <p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p>
<h5 id="deprecated_twitter_handle">deprecated_twitter_handle</h5> <h5 id="deprecated_twitter_handle">deprecated_twitter_handle</h5>
<p>This <em>JSON member</em> used to hold the twitter handle of the author.</p> <p>This <em>JSON member</em> used to hold the twitter handle of the author.</p>
@@ -2394,17 +2393,17 @@ be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>.</
and so the <code>deprecated_twitter_handle</code> is <strong>no longer used</strong>. A <em>JSON value</em> that is and so the <code>deprecated_twitter_handle</code> is <strong>no longer used</strong>. A <em>JSON value</em> that is
not a <em>JSON null</em> is kept for only historic reasons. For example, Anthony C. Howe not a <em>JSON null</em> is kept for only historic reasons. For example, Anthony C. Howe
once used:</p> once used:</p>
<pre><code> &quot;deprecated_twitter_handle&quot; : &quot;@SirWumpus&quot;,</code></pre> <pre><code> &quot;deprecated_twitter_handle&quot; : &quot;@SirWumpus&quot;</code></pre>
<p>If the author wishes to not specify a twitter handle, or if the twitter handle is <p>If the author wishes to not specify a twitter handle, or if the twitter handle is
unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON member</em>. unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON member</em>.
For example:</p> For example:</p>
<pre><code> &quot;deprecated_twitter_handle&quot; : null,</code></pre> <pre><code> &quot;deprecated_twitter_handle&quot; : null</code></pre>
<p>Of course in the future we will not be asking for twitter handles so this means <p>Of course in the future we will not be asking for twitter handles so this means
that unless the winner is a previous winner (before we moved to mastodon) this that unless the winner is a previous winner (before we moved to mastodon) this
will always be <code>null</code> anyway.</p> will always be <code>null</code> anyway.</p>
<p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p> <p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p>
<h5 id="mastodon">mastodon</h5> <h5 id="mastodon">mastodon</h5>
<pre><code> &quot;mastodon&quot; : &quot;@mame@ruby.social&quot;,</code></pre> <pre><code> &quot;mastodon&quot; : &quot;@mame@ruby.social&quot;</code></pre>
<p>This <em>JSON member</em> holds the <p>This <em>JSON member</em> holds the
<a href="https://en.wikipedia.org/wiki/Mastodon_(social_network)">Mastodon social network</a> <a href="https://en.wikipedia.org/wiki/Mastodon_(social_network)">Mastodon social network</a>
handle of the author.</p> handle of the author.</p>
@@ -2424,68 +2423,113 @@ are selected. We recommend you follow us on Mastodon.</p>
<p>If the author wishes to not specify an Mastodon handle, or if the Mastodon handle is <p>If the author wishes to not specify an Mastodon handle, or if the Mastodon handle is
unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON member</em>. unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON member</em>.
For example:</p> For example:</p>
<pre><code> &quot;mastodon&quot; : null,</code></pre> <pre><code> &quot;mastodon&quot; : null</code></pre>
<p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p> <p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p>
<h5 id="mastodon_url">mastodon_url</h5> <h5 id="mastodon_url">mastodon_url</h5>
<pre><code> &quot;mastodon_url&quot; : &quot;https://ruby.social/@mame&quot;,</code></pre> <pre><code> &quot;mastodon_url&quot; : &quot;https://ruby.social/@mame&quot;</code></pre>
<p>This <em>JSON member</em> holds the URL of the author’s Mastodon page.</p> <p>This <em>JSON member</em> holds the URL of the author’s Mastodon page.</p>
<p>There <strong>MUST</strong> be one and only one <code>mastodon_url</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> <p>There <strong>MUST</strong> be one and only one <code>mastodon_url</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong>
be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>. The <em>JSON string</em> just be a valid URL. be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>. The <em>JSON string</em> just be a valid URL.
If the <code>mastodon</code> handle is a <em>JSON null</em>, them the <code>mastodon_url</code> <strong>MUST</strong> be a <em>JSON null</em>. If the <code>mastodon</code> handle is a <em>JSON null</em>, them the <code>mastodon_url</code> <strong>MUST</strong> be a <em>JSON null</em>.
If the <code>mastodon</code> handle is a <em>JSON string</em>, then the <code>mastodon_url</code> <strong>MUST</strong> be a <em>JSON string</em>.</p> If the <code>mastodon</code> handle is a <em>JSON string</em>, then the <code>mastodon_url</code> <strong>MUST</strong> be a <em>JSON string</em>.</p>
<p>The <code>mastodon_url</code> is just a translation of the above mentioned Mastodon handle. <p>The <code>mastodon_url</code> is just a translation of the above mentioned Mastodon handle.
For example, if the Mastodon handle is:</p> For example, if the Mastodon handle is <code>@user@server.domain</code>, then the
<pre><code> @user@server.domain</code></pre> <code>mastodon_url</code> would be <code>https://server.domain/@user</code>.</p>
<p>Then the <code>mastodon_url</code> would be:</p>
<pre><code> https://server.domain/@user</code></pre>
<p>If the author wishes to not specify an Mastodon URL, or if the Mastodon URL is <p>If the author wishes to not specify an Mastodon URL, or if the Mastodon URL is
unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON member</em>. unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON member</em>.
For example:</p> For example:</p>
<pre><code> &quot;mastodon_url&quot; : null,</code></pre> <pre><code> &quot;mastodon_url&quot; : null</code></pre>
<p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p> <p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p>
<p>See <p>See
FAQ on “<a href="#try_mastodon">Mastodon</a>” FAQ on “<a href="#try_mastodon">Mastodon</a>”
for more information on Mastodon.</p> for more information on Mastodon.</p>
<h5 id="github">github</h5> <h5 id="github">github</h5>
<pre><code> &quot;github&quot; : &quot;@mame&quot;,</code></pre> <pre><code> &quot;github&quot; : &quot;@mame&quot;</code></pre>
<p>This <em>JSON member</em> holds the <a href="https://github.com">GitHub</a> handle of the author.</p> <p>This <em>JSON member</em> holds the <a href="https://github.com">GitHub</a> handle of the author.</p>
<p>There <strong>MUST</strong> be one and only one <code>github</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> <p>There <strong>MUST</strong> be one and only one <code>github</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong>
be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>. The <code>github</code> <em>JSON string</em> <strong>MUST</strong> be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>. The <code>github</code> <em>JSON string</em> <strong>MUST</strong>
start with an at sign (_<span class="citation" data-cites="_">@_</span>) and <strong>MUST</strong> be a valid GitHub username.</p> start with an at sign (_<span class="citation" data-cites="_">@_</span>) and <strong>MUST</strong> be a valid GitHub username.</p>
<p>The IOCCC uses GitHub to hold the <a href="https://github.com/ioccc-src/winner">official winner repo of the IOCCC</a>, <p>The IOCCC uses GitHub to hold the <a href="https://github.com/ioccc-src/winner">official winner repo of the IOCCC</a>,
and hosts <a href="https://www.ioccc.org">official IOCCC website</a> on GitHub pages.</p> and hosts <a href="https://www.ioccc.org">official IOCCC website</a> on GitHub pages.</p>
<p>The IOCCC GitHub handle is:</p> <p>The IOCCC GitHub handle is <a href="https://github.com/ioccc-src/"><span class="citation" data-cites="ioccc-src">@ioccc-src</span></a>.</p>
<pre><code> @ioccc-src</code></pre>
<p>If the author wishes to not specify an GitHub handle, or if the GitHub handle is <p>If the author wishes to not specify an GitHub handle, or if the GitHub handle is
unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON member</em>. unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON member</em>.
For example:</p> For example:</p>
<pre><code> &quot;github&quot; : null,</code></pre> <pre><code> &quot;github&quot; : null</code></pre>
<p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p> <p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p>
<h5 id="affiliation">affiliation</h5> <h5 id="affiliation">affiliation</h5>
<pre><code> &quot;affiliation&quot; : null,</code></pre> <pre><code> &quot;affiliation&quot; : null</code></pre>
<p>This <em>JSON member</em> holds the affiliation of the author.</p> <p>This <em>JSON member</em> holds the affiliation of the author.</p>
<p>There <strong>MUST</strong> be one and only one <code>affiliation</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> <p>There <strong>MUST</strong> be one and only one <code>affiliation</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong>
be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>.</p> be a <em>JSON string</em> or it <strong>MUST</strong> be a <em>JSON null</em>.</p>
<p>An affiliation might be the name of a school, university, company, or organization. <p>An affiliation might be the name of a school, university, company, or organization.
It is recommended that the affiliation <em>JSON string</em> be the formal affiliation name. It is recommended that the affiliation <em>JSON string</em> be the formal affiliation name.
For example, the affiliation for the IOCCC would be:</p> For example, the affiliation for the IOCCC would be:</p>
<pre><code> The International Obfuscared C Code Contest</code></pre> <pre><code> &quot;affiliation&quot;: &quot;The International Obfuscated C Code Contest&quot;</code></pre>
<p>If the author wishes to not specify an affiliation, or if the affiliation is <p>If the author wishes to not specify an affiliation, or if the affiliation is
unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON member</em>. unknown, it should be the <em>JSON null</em> as the <em>JSON value</em> of this <em>JSON member</em>.
For example:</p> For example:</p>
<pre><code> &quot;affiliation&quot; : null,</code></pre> <pre><code> &quot;affiliation&quot; : null</code></pre>
<p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p> <p><strong>NOTE</strong>: The <em>JSON null</em> is <strong>NOT</strong> enclosed in quotes!</p>
<h5 id="winning_entry_set">winning_entry_set</h5> <h5 id="winning_entry_set">winning_entry_set</h5>
<h5 id="entry_id">entry_id</h5> <h5 id="entry_id">entry_id</h5>
<pre><code> &quot;winning_entry_set&quot; : [ <pre><code> &quot;winning_entry_set&quot; : [
{ &quot;entry_id&quot; : &quot;2012_endoh1&quot; }, {
{ &quot;entry_id&quot; : &quot;2012_endoh2&quot; }, &quot;entry_id&quot; : &quot;2012_endoh1&quot;
{ &quot;entry_id&quot; : &quot;2013_endoh1&quot; }, },
... {
{ &quot;entry_id&quot; : &quot;2020_endoh1&quot; }, &quot;entry_id&quot; : &quot;2012_endoh2&quot;
{ &quot;entry_id&quot; : &quot;2020_endoh2&quot; }, },
{ &quot;entry_id&quot; : &quot;2020_endoh3&quot; } {
&quot;entry_id&quot; : &quot;2013_endoh1&quot;
},
{
&quot;entry_id&quot; : &quot;2013_endoh2&quot;
},
{
&quot;entry_id&quot; : &quot;2013_endoh3&quot;
},
{
&quot;entry_id&quot; : &quot;2013_endoh4&quot;
},
{
&quot;entry_id&quot; : &quot;2014_endoh1&quot;
},
{
&quot;entry_id&quot; : &quot;2014_endoh2&quot;
},
{
&quot;entry_id&quot; : &quot;2015_endoh1&quot;
},
{
&quot;entry_id&quot; : &quot;2015_endoh2&quot;
},
{
&quot;entry_id&quot; : &quot;2015_endoh3&quot;
},
{
&quot;entry_id&quot; : &quot;2015_endoh4&quot;
},
{
&quot;entry_id&quot; : &quot;2018_endoh1&quot;
},
{
&quot;entry_id&quot; : &quot;2018_endoh2&quot;
},
{
&quot;entry_id&quot; : &quot;2019_endoh&quot;
},
{
&quot;entry_id&quot; : &quot;2020_endoh1&quot;
},
{
&quot;entry_id&quot; : &quot;2020_endoh2&quot;
},
{
&quot;entry_id&quot; : &quot;2020_endoh3&quot;
}
]</code></pre> ]</code></pre>
<p>(… as of Wed 23 Oct 2024 17:20:26 UTC.)</p>
<p>The <code>winning_entry_set</code> <em>JSON member</em> holds <em>JSON array</em> containing one or more <code>entry_id</code> _JSON member_s.</p> <p>The <code>winning_entry_set</code> <em>JSON member</em> holds <em>JSON array</em> containing one or more <code>entry_id</code> _JSON member_s.</p>
<p>There <strong>MUST</strong> be one and only one <code>winning_entry_set</code> and the <em>JSON value</em> <strong>MUST</strong> <p>There <strong>MUST</strong> be one and only one <code>winning_entry_set</code> and the <em>JSON value</em> <strong>MUST</strong>
be a non-empty <em>JSON array</em>. Each value in that <em>JSON array</em> <strong>MUST</strong> must contain be a non-empty <em>JSON array</em>. Each value in that <em>JSON array</em> <strong>MUST</strong> must contain
@@ -2541,10 +2585,9 @@ for more information on terms such as <em>author</em>, <em>entry</em>, and <em>s
<p>An <code>entry_id</code> is a string that identifies a winning entry of the IOCCC.</p> <p>An <code>entry_id</code> is a string that identifies a winning entry of the IOCCC.</p>
<p>An <code>entry_id</code> is a 4-digit year, followed by an underscore, followed by a directory name.</p> <p>An <code>entry_id</code> is a 4-digit year, followed by an underscore, followed by a directory name.</p>
<p>For example, the <code>entry_id</code> associated with Cody Boone Ferguson’s 2nd winning IOCCC entry <p>For example, the <code>entry_id</code> associated with Cody Boone Ferguson’s 2nd winning IOCCC entry
of 2020 is found under the following directory:</p> of 2020 is found under the directory
<pre><code> 2020/ferguson2</code></pre> <a href="2020/ferguson2/index.html">2020/ferguson2</a>.</p>
<p>The <code>entry_id</code> for that winning entry is:</p> <p>The <code>entry_id</code> for that winning entry is <code>2020_ferguson2</code>.</p>
<pre><code> 2020_ferguson2</code></pre>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="entry_json"> <div id="entry_json">
<h3 id="q-3.10-what-is-a-.entry.json-file-and-how-is-it-used">Q 3.10: What is a <code>.entry.json</code> file and how is it used?</h3> <h3 id="q-3.10-what-is-a-.entry.json-file-and-how-is-it-used">Q 3.10: What is a <code>.entry.json</code> file and how is it used?</h3>
@@ -2556,9 +2599,9 @@ about the entry. We describe the fields below in order to help you understand
its contents.</p> its contents.</p>
<p>This file is created by the <a href="bin/index.html#cvt-submission">cvt-submission.sh</a> <p>This file is created by the <a href="bin/index.html#cvt-submission">cvt-submission.sh</a>
tool as part of the final steps to announce a new set of winning IOCCC entries.</p> tool as part of the final steps to announce a new set of winning IOCCC entries.</p>
<p>Each winning entry has its own <code>.entry.json</code> filename of the form:</p> <p>Each winning entry has its own <code>.entry.json</code> filename of the form:
<pre><code> YYYY/winner/.entry.json</code></pre> <code>YYYY/winner/.entry.json</code></p>
<p>where <em>winner</em> is the entry directory name, usually the name of the author.</p> <p>.. where <em>winner</em> is the entry directory name, usually the name of the author.</p>
<p><strong>IMPORTANT NOTE</strong>: this file should <strong>NOT</strong> be manually modified! It is created <p><strong>IMPORTANT NOTE</strong>: this file should <strong>NOT</strong> be manually modified! It is created
by the <a href="bin/index.html#csv2entry">csv2entry</a> tool when updating the manifest.</p> by the <a href="bin/index.html#csv2entry">csv2entry</a> tool when updating the manifest.</p>
<h4 id="entry.json-json-file-contents"><code>.entry.json</code> JSON file contents</h4> <h4 id="entry.json-json-file-contents"><code>.entry.json</code> JSON file contents</h4>
@@ -2672,14 +2715,14 @@ it is shorter than some of the others.</p>
<p>We now will walk through the above JSON document looking at all the JSON <p>We now will walk through the above JSON document looking at all the JSON
members:</p> members:</p>
<h5 id="no_comment-1"><code>no_comment</code></h5> <h5 id="no_comment-1"><code>no_comment</code></h5>
<pre><code> &quot;no_comment&quot; : &quot;mandatory comment: because comments were removed from the original JSON spec&quot;,</code></pre> <pre><code> &quot;no_comment&quot; : &quot;mandatory comment: because comments were removed from the original JSON spec&quot;</code></pre>
<p>Because the authors of the so-called JSON spec removed the ability to use comments in JSON <p>Because the authors of the so-called JSON spec removed the ability to use comments in JSON
(for reason(s) that seem to be less than credible), the IOCCC mandates this <em>JSON member</em> (for reason(s) that seem to be less than credible), the IOCCC mandates this <em>JSON member</em>
be present in all IOCCC related JSON files.</p> be present in all IOCCC related JSON files.</p>
<p>There <strong>MUST</strong> be one and only one <code>no_comment</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> <p>There <strong>MUST</strong> be one and only one <code>no_comment</code> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong>
be the exact <em>JSON string</em> as shown above.</p> be the exact <em>JSON string</em> as shown above.</p>
<h5 id="entry_json_format_version"><code>entry_JSON_format_version</code></h5> <h5 id="entry_json_format_version"><code>entry_JSON_format_version</code></h5>
<pre><code> &quot;entry_JSON_format_version&quot; : &quot;1.2 2024-09-25&quot;,</code></pre> <pre><code> &quot;entry_JSON_format_version&quot; : &quot;1.2 2024-09-25&quot;</code></pre>
<p>This <em>JSON member</em> holds the format version of the <code>.entry.json</code> JSON file.</p> <p>This <em>JSON member</em> holds the format version of the <code>.entry.json</code> JSON file.</p>
<p>There <strong>MUST</strong> be one and only one <code>entry_JSON_format_version</code> <p>There <strong>MUST</strong> be one and only one <code>entry_JSON_format_version</code>
<em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> be a <em>JSON string</em>.</p> <em>JSON member</em> and the <em>JSON value</em> <strong>MUST</strong> be a <em>JSON string</em>.</p>
@@ -2689,20 +2732,20 @@ of the these files is modified: and then only those who maintain the
<a href="https://www.ioccc.org">official IOCCC website</a> would be the one to do this <a href="https://www.ioccc.org">official IOCCC website</a> would be the one to do this
in conjunction with changes to <a href="bin/index.html">bin directory tools</a>.</p> in conjunction with changes to <a href="bin/index.html">bin directory tools</a>.</p>
<h5 id="award"><code>award</code></h5> <h5 id="award"><code>award</code></h5>
<pre><code> &quot;award&quot; : &quot;Third Place&quot;,</code></pre> <pre><code> &quot;award&quot; : &quot;Third Place&quot;</code></pre>
<p>This JSON string is the award title of the entry which the <a href="judges.html">Judges</a> <p>This JSON string is the award title of the entry which the <a href="judges.html">Judges</a>
decide/decided when it becomes/became a winning entry.</p> decide/decided when it becomes/became a winning entry.</p>
<h5 id="year"><code>year</code></h5> <h5 id="year"><code>year</code></h5>
<pre><code> &quot;year&quot; : 1984,</code></pre> <pre><code> &quot;year&quot; : 1984</code></pre>
<p>This JSON number is the year the contest ran, ended or was announced in.</p> <p>This JSON number is the year the contest ran, ended or was announced in.</p>
<h5 id="dir"><code>dir</code></h5> <h5 id="dir"><code>dir</code></h5>
<pre><code> &quot;dir&quot; : &quot;laman&quot;,</code></pre> <pre><code> &quot;dir&quot; : &quot;laman&quot;</code></pre>
<p>This JSON string is the subdirectory of the entry, <strong>under</strong> the year directory, <p>This JSON string is the subdirectory of the entry, <strong>under</strong> the year directory,
in this case <a href="1984/index.html">1984</a>. With the above member, <code>year</code>, and this in this case <a href="1984/index.html">1984</a>. With the above member, <code>year</code>, and this
one, one can determine the directory of the entry, here being one, one can determine the directory of the entry, here being
<a href="1984/laman/index.html">1984/laman</a>.</p> <a href="1984/laman/index.html">1984/laman</a>.</p>
<h5 id="entry_id-1"><code>entry_id</code></h5> <h5 id="entry_id-1"><code>entry_id</code></h5>
<pre><code> &quot;entry_id&quot; : &quot;1984_laman&quot;,</code></pre> <pre><code> &quot;entry_id&quot; : &quot;1984_laman&quot;</code></pre>
<p>This is the ID of the entry in question and corresponds to the <code>entry_id</code> in the <p>This is the ID of the entry in question and corresponds to the <code>entry_id</code> in the
<code>author/author_handle.json</code> file.</p> <code>author/author_handle.json</code> file.</p>
<p>See <p>See
@@ -2731,7 +2774,7 @@ for more information on <code>.info.json</code> files.</p>
<h5 id="author_set"><code>author_set</code></h5> <h5 id="author_set"><code>author_set</code></h5>
<pre><code> &quot;author_set&quot; : [ <pre><code> &quot;author_set&quot; : [
{ &quot;author_handle&quot; : &quot;Mike_Laman&quot; } { &quot;author_handle&quot; : &quot;Mike_Laman&quot; }
],</code></pre> ]</code></pre>
<p>This JSON <strong>array</strong> has a list of <code>author_handle</code>s that indicate who won this <p>This JSON <strong>array</strong> has a list of <code>author_handle</code>s that indicate who won this
entry.</p> entry.</p>
<p>That <em>JSON member</em> holds the author handle of the author.</p> <p>That <em>JSON member</em> holds the author handle of the author.</p>
@@ -3483,8 +3526,8 @@ for downloading, installing and using ImageMagick.</p>
FAQ on “<a href="#X11">X11</a>” FAQ on “<a href="#X11">X11</a>”
for general information about X11.</p> for general information about X11.</p>
<p>Once X11 is install and the X Window Server is running, one needs to compile <p>Once X11 is install and the X Window Server is running, one needs to compile
and link with the two libraries, <em>GL</em> and <em>GLU</em>:</p> and link with the two libraries, <em>GL</em> and <em>GLU</em>, which the Makefile should do if
<pre><code> cc ... -lGL -lGLU -L _location-where-X11-libs-are-installed_ -lX11</code></pre> you just run <code>make</code>.</p>
<p><strong>NOTE</strong>: The OpenGL development effort is being managed by <a href="https://vulkan.org">vulkan.org</a>. <p><strong>NOTE</strong>: The OpenGL development effort is being managed by <a href="https://vulkan.org">vulkan.org</a>.
We suggest you check out their resource for further information on OpenGL.</p> We suggest you check out their resource for further information on OpenGL.</p>
<h4 id="red-hat-based-linux-7">Red Hat based Linux</h4> <h4 id="red-hat-based-linux-7">Red Hat based Linux</h4>
@@ -4540,11 +4583,11 @@ cake recipe</a>.</p>
<p>You may correct or update IOCCC author information by submitting a <p>You may correct or update IOCCC author information by submitting a
GitHub pull request that modifies an author’s <code>author_handle.json</code> file.</p> GitHub pull request that modifies an author’s <code>author_handle.json</code> file.</p>
<p>For example, if a given <code>author_handle.json</code> file contained:</p> <p>For example, if a given <code>author_handle.json</code> file contained:</p>
<pre><code> &quot;url&quot; : &quot;https://www.example.com/employee/username&quot;,</code></pre> <pre><code> &quot;url&quot; : &quot;https://www.example.com/employee/username&quot;</code></pre>
<p>and you knew that the author has long ago left the <code>www.example.com</code> company, <p>and you knew that the author has long ago left the <code>www.example.com</code> company,
and that they have a new faculty web page at <code>www.example.edu</code>, then you should and that they have a new faculty web page at <code>www.example.edu</code>, then you should
submit a GitHub pull request to change the above line to:</p> submit a GitHub pull request to change the above line to:</p>
<pre><code> &quot;url&quot; : &quot;https://www.example.edu/faculty/deartment/user.name&quot;,</code></pre> <pre><code> &quot;url&quot; : &quot;https://www.example.edu/faculty/deartment/user.name&quot;</code></pre>
<p>Authors of IOCCC winning entries are kept in JSON files of the form:</p> <p>Authors of IOCCC winning entries are kept in JSON files of the form:</p>
<pre><code> author/author_handle.json</code></pre> <pre><code> author/author_handle.json</code></pre>
<p>where <code>author_handle</code> is an author handle.</p> <p>where <code>author_handle</code> is an author handle.</p>
@@ -4606,11 +4649,11 @@ about authors of IOCCC entries. See
FAQ on “<a href="#author_json">author_handle.json</a>” FAQ on “<a href="#author_json">author_handle.json</a>”
for information about the contents of these JSON files and how they are used.</p> for information about the contents of these JSON files and how they are used.</p>
<p>For example, if a given <code>author_handle.json</code> file contained:</p> <p>For example, if a given <code>author_handle.json</code> file contained:</p>
<pre><code> &quot;location_code&quot; : &quot;ZZ&quot;,</code></pre> <pre><code> &quot;location_code&quot; : &quot;ZZ&quot;</code></pre>
<p>and you knew that the author was located in <a href="location.html#AU">Australia</a> <p>and you knew that the author was located in <a href="location.html#AU">Australia</a>
(location code <strong>AU</strong>), we encourage you to submit a <strong>GitHub pull (location code <strong>AU</strong>), we encourage you to submit a <strong>GitHub pull
request</strong> to change that line to:</p> request</strong> to change that line to:</p>
<pre><code> &quot;location_code&quot; : &quot;AU&quot;,</code></pre> <pre><code> &quot;location_code&quot; : &quot;AU&quot;</code></pre>
<p>See the <p>See the
FAQ on “<a href="#fix_author">fixing author information</a>” FAQ on “<a href="#fix_author">fixing author information</a>”
for information about how to change author location codes.</p> for information about how to change author location codes.</p>
+112 -111
View File
@@ -939,9 +939,7 @@ previous IOCCC entries make it more challenging to be successful.
It is also important to note that the [guidelines](next/guidelines.html) often It is also important to note that the [guidelines](next/guidelines.html) often
state something along the lines of: state something along the lines of:
``` > We tend to dislike programs that: are similar to previous winning entries.
We tend to dislike programs that: are similar to previous winning entries.
```
**FAIR WARNING**: Be sure to **clearly explain** near the beginning **FAIR WARNING**: Be sure to **clearly explain** near the beginning
of your `remarks.md` file, see the of your `remarks.md` file, see the
@@ -2062,10 +2060,7 @@ An `author_handle` is string that refers to a given author and is unique to the
IOCCC. Each author has exactly one `author_handle`. IOCCC. Each author has exactly one `author_handle`.
For each `author_handle`, there will be a JSON file of the form: For each `author_handle`, there will be a JSON file of the form:
`author/author_handle.json`.
```
author/author_handle.json
```
See the See the
FAQ on "[fixing author information](#fix_author)" FAQ on "[fixing author information](#fix_author)"
@@ -2107,18 +2102,8 @@ An `author` who has won a previous IOCCC is encouraged to reuse their
`author_handle` so that new winning entries can be associated with the same `author_handle` so that new winning entries can be associated with the same
author. author.
For an anonymous `author`, their handle is one of these forms: For an anonymous `author`, their handle is one of the form of `Anonymous_year`
or `Anonymous_year.digits`.
```
Anonymous_year
```
or:
```
Anonymous_year.digits
```
The latter form is in case there are more than one anonymous author in a given The latter form is in case there are more than one anonymous author in a given
year. year.
@@ -2164,11 +2149,7 @@ contact an authors of an IOCCC entry, they will consult the contents
of the author's JSON file for ways to contact them. of the author's JSON file for ways to contact them.
Each author of an IOCCC winning entry has their own `author_handle.json` file Each author of an IOCCC winning entry has their own `author_handle.json` file
of the form: of the form `author/author_handle.json`.
```
author/author_handle.json
```
where _author_handle_ is an author handle. See where _author_handle_ is an author handle. See
FAQ on "[author handle](#author_handle_faq)" FAQ on "[author handle](#author_handle_faq)"
@@ -2181,13 +2162,10 @@ See <https://www.json.org/json-en.html> for information on the _So-called JSON
spec_. spec_.
A good way to understand the JSON file contents of a `author_handle.json` file A good way to understand the JSON file contents of a `author_handle.json` file
is to look at an example, the `author_handle.json` file for Yusuke Endoh: is to look at an example, for instance the `author_handle.json` file for Yusuke
Endoh, [author/Yusuke_Endoh.json](%%REPO_URL%%/author/Yusuke_Endoh.json).
``` As of _Thu Nov 30 23:51:12 UTC 2023_, it was:
author/Yusuke_Endoh.json
```
As of _Thu Nov 30 23:51:12 UTC 2023_, the contents was as follows:
``` <!---json--> ``` <!---json-->
{ {
@@ -2233,7 +2211,7 @@ FAQ on "[validating JSON documents](#validating_json)". Taking that FAQ in mind,
if you wish to validate every JSON file in `author/` then you could do so like: if you wish to validate every JSON file in `author/` then you could do so like:
``` <!--sh--> ``` <!--sh-->
for auth in *.json; do jparse -q "$auth" || echo "$auth is invalid JSON" ; done for auth in *.json; do jparse -q "$auth" || echo "$auth is invalid JSON" ; done
``` ```
If you see any output then it will say which file or files are invalid JSON If you see any output then it will say which file or files are invalid JSON
@@ -2254,7 +2232,7 @@ We now will walk thru the above JSON document looking at various JSON members:
##### no_comment ##### no_comment
``` <!--- json--> ``` <!--- json-->
"no_comment" : "mandatory comment: because comments were removed from the original JSON spec", "no_comment" : "mandatory comment: because comments were removed from the original JSON spec"
``` ```
Because the authors of the so-called JSON spec removed the ability to use comments in JSON Because the authors of the so-called JSON spec removed the ability to use comments in JSON
@@ -2268,7 +2246,7 @@ be the exact _JSON string_ as shown above.
##### author_JSON_format_version ##### author_JSON_format_version
``` <!---json--> ``` <!---json-->
"author_JSON_format_version" : "1.0 2023-06-10", "author_JSON_format_version" : "1.0 2023-06-10"
``` ```
This _JSON member_ holds the format version of the `author_handle.json` JSON file. This _JSON member_ holds the format version of the `author_handle.json` JSON file.
@@ -2289,7 +2267,7 @@ in conjunction with changes to [bin directory tools](bin/index.html).
##### author_handle ##### author_handle
``` <!---json--> ``` <!---json-->
"author_handle" : "Yusuke_Endoh", "author_handle" : "Yusuke_Endoh"
``` ```
This _JSON member_ holds the author handle of the author. This _JSON member_ holds the author handle of the author.
@@ -2314,7 +2292,7 @@ a change of _author_handle_ _JSON value_ would also require the
##### full_name ##### full_name
``` <!---json--> ``` <!---json-->
"full_name" : "Yusuke Endoh", "full_name" : "Yusuke Endoh"
``` ```
This _JSON member_ holds the full name of the author. This _JSON member_ holds the full name of the author.
@@ -2329,7 +2307,7 @@ full name is properly encoded as a _JSON string_.
##### sort_word ##### sort_word
``` <!---json--> ``` <!---json-->
"sort_word" : "endoh", "sort_word" : "endoh"
``` ```
This _JSON member_ holds the string that will be used to sort the author. This _JSON member_ holds the string that will be used to sort the author.
@@ -2352,7 +2330,7 @@ or their username, then they may change this accordingly.
##### location_code ##### location_code
``` <!---json--> ``` <!---json-->
"location_code" : "JP", "location_code" : "JP"
``` ```
This _JSON member_ holds the string that is the This _JSON member_ holds the string that is the
@@ -2379,7 +2357,7 @@ If the author wishes to not specify a location, they should select **XX**.
##### email ##### email
``` <!---json--> ``` <!---json-->
"email" : "mame@ruby-lang.org", "email" : "mame@ruby-lang.org"
``` ```
This _JSON member_ holds the email address of the author, or is the value null. This _JSON member_ holds the email address of the author, or is the value null.
@@ -2392,7 +2370,7 @@ unknown, it should be the _JSON null_ as the _JSON value_ of this _JSON member_.
For example: For example:
``` <!---json--> ``` <!---json-->
"email" : null, "email" : null
``` ```
**NOTE**: The _JSON null_ is **NOT** enclosed in quotes! **NOTE**: The _JSON null_ is **NOT** enclosed in quotes!
@@ -2401,7 +2379,7 @@ For example:
##### url ##### url
``` <!---json--> ``` <!---json-->
"url" : "https://mametter.hatenablog.com", "url" : "https://mametter.hatenablog.com"
``` ```
This _JSON member_ holds the URL of the author's home page. This _JSON member_ holds the URL of the author's home page.
@@ -2414,7 +2392,7 @@ unknown, it should be the _JSON null_ as the _JSON value_ of this _JSON
member_. For example: member_. For example:
``` <!---json--> ``` <!---json-->
"url" : null, "url" : null
``` ```
**NOTE**: The _JSON null_ is **NOT** enclosed in quotes! **NOTE**: The _JSON null_ is **NOT** enclosed in quotes!
@@ -2423,7 +2401,7 @@ member_. For example:
##### alt_url ##### alt_url
``` <!---json--> ``` <!---json-->
"alt_url" : null, "alt_url" : null
``` ```
This _JSON member_ holds an alternate or 2nd URL a home page for the author. This _JSON member_ holds an alternate or 2nd URL a home page for the author.
@@ -2436,7 +2414,7 @@ or a 2nd URL such as a work or school or personal home page. For example,
Cody as of _Thu Nov 30 23:51:12 UTC 2023_ used: Cody as of _Thu Nov 30 23:51:12 UTC 2023_ used:
``` <!---json--> ``` <!---json-->
"alt_url" : "https://ioccc.xexyl.net", "alt_url" : "https://ioccc.xexyl.net"
``` ```
If the author wishes to not specify an alternate URL, or if the alternate URL is If the author wishes to not specify an alternate URL, or if the alternate URL is
@@ -2444,7 +2422,7 @@ unknown, it should be the _JSON null_ as the _JSON value_ of this _JSON
member_. For example: member_. For example:
``` <!---json--> ``` <!---json-->
"alt_url" : null, "alt_url" : null
``` ```
**NOTE**: The _JSON null_ is **NOT** enclosed in quotes! **NOTE**: The _JSON null_ is **NOT** enclosed in quotes!
@@ -2463,7 +2441,7 @@ not a _JSON null_ is kept for only historic reasons. For example, Anthony C. Ho
once used: once used:
``` <!---json--> ``` <!---json-->
"deprecated_twitter_handle" : "@SirWumpus", "deprecated_twitter_handle" : "@SirWumpus"
``` ```
If the author wishes to not specify a twitter handle, or if the twitter handle is If the author wishes to not specify a twitter handle, or if the twitter handle is
@@ -2471,7 +2449,7 @@ unknown, it should be the _JSON null_ as the _JSON value_ of this _JSON member_.
For example: For example:
``` <!---json--> ``` <!---json-->
"deprecated_twitter_handle" : null, "deprecated_twitter_handle" : null
``` ```
Of course in the future we will not be asking for twitter handles so this means Of course in the future we will not be asking for twitter handles so this means
@@ -2484,7 +2462,7 @@ will always be `null` anyway.
##### mastodon ##### mastodon
``` <!---json--> ``` <!---json-->
"mastodon" : "@mame@ruby.social", "mastodon" : "@mame@ruby.social"
``` ```
This _JSON member_ holds the This _JSON member_ holds the
@@ -2516,7 +2494,7 @@ unknown, it should be the _JSON null_ as the _JSON value_ of this _JSON member_.
For example: For example:
``` <!---json--> ``` <!---json-->
"mastodon" : null, "mastodon" : null
``` ```
**NOTE**: The _JSON null_ is **NOT** enclosed in quotes! **NOTE**: The _JSON null_ is **NOT** enclosed in quotes!
@@ -2525,7 +2503,7 @@ For example:
##### mastodon_url ##### mastodon_url
``` <!---json--> ``` <!---json-->
"mastodon_url" : "https://ruby.social/@mame", "mastodon_url" : "https://ruby.social/@mame"
``` ```
This _JSON member_ holds the URL of the author's Mastodon page. This _JSON member_ holds the URL of the author's Mastodon page.
@@ -2536,24 +2514,15 @@ If the `mastodon` handle is a _JSON null_, them the `mastodon_url` **MUST** be a
If the `mastodon` handle is a _JSON string_, then the `mastodon_url` **MUST** be a _JSON string_. If the `mastodon` handle is a _JSON string_, then the `mastodon_url` **MUST** be a _JSON string_.
The `mastodon_url` is just a translation of the above mentioned Mastodon handle. The `mastodon_url` is just a translation of the above mentioned Mastodon handle.
For example, if the Mastodon handle is: For example, if the Mastodon handle is `@user@server.domain`, then the
`mastodon_url` would be `https://server.domain/@user`.
```
@user@server.domain
```
Then the `mastodon_url` would be:
```
https://server.domain/@user
```
If the author wishes to not specify an Mastodon URL, or if the Mastodon URL is If the author wishes to not specify an Mastodon URL, or if the Mastodon URL is
unknown, it should be the _JSON null_ as the _JSON value_ of this _JSON member_. unknown, it should be the _JSON null_ as the _JSON value_ of this _JSON member_.
For example: For example:
``` <!---json--> ``` <!---json-->
"mastodon_url" : null, "mastodon_url" : null
``` ```
**NOTE**: The _JSON null_ is **NOT** enclosed in quotes! **NOTE**: The _JSON null_ is **NOT** enclosed in quotes!
@@ -2566,7 +2535,7 @@ for more information on Mastodon.
##### github ##### github
``` <!---json--> ``` <!---json-->
"github" : "@mame", "github" : "@mame"
``` ```
This _JSON member_ holds the [GitHub](https://github.com) handle of the author. This _JSON member_ holds the [GitHub](https://github.com) handle of the author.
@@ -2578,18 +2547,14 @@ start with an at sign (_@_) and **MUST** be a valid GitHub username.
The IOCCC uses GitHub to hold the [official winner repo of the IOCCC](https://github.com/ioccc-src/winner), The IOCCC uses GitHub to hold the [official winner repo of the IOCCC](https://github.com/ioccc-src/winner),
and hosts [official IOCCC website](https://www.ioccc.org) on GitHub pages. and hosts [official IOCCC website](https://www.ioccc.org) on GitHub pages.
The IOCCC GitHub handle is: The IOCCC GitHub handle is [@ioccc-src](https://github.com/ioccc-src/).
```
@ioccc-src
```
If the author wishes to not specify an GitHub handle, or if the GitHub handle is If the author wishes to not specify an GitHub handle, or if the GitHub handle is
unknown, it should be the _JSON null_ as the _JSON value_ of this _JSON member_. unknown, it should be the _JSON null_ as the _JSON value_ of this _JSON member_.
For example: For example:
``` <!---json--> ``` <!---json-->
"github" : null, "github" : null
``` ```
**NOTE**: The _JSON null_ is **NOT** enclosed in quotes! **NOTE**: The _JSON null_ is **NOT** enclosed in quotes!
@@ -2598,7 +2563,7 @@ For example:
##### affiliation ##### affiliation
``` <!---json--> ``` <!---json-->
"affiliation" : null, "affiliation" : null
``` ```
This _JSON member_ holds the affiliation of the author. This _JSON member_ holds the affiliation of the author.
@@ -2610,8 +2575,8 @@ An affiliation might be the name of a school, university, company, or organizati
It is recommended that the affiliation _JSON string_ be the formal affiliation name. It is recommended that the affiliation _JSON string_ be the formal affiliation name.
For example, the affiliation for the IOCCC would be: For example, the affiliation for the IOCCC would be:
``` ``` <!---json-->
The International Obfuscared C Code Contest "affiliation": "The International Obfuscated C Code Contest"
``` ```
If the author wishes to not specify an affiliation, or if the affiliation is If the author wishes to not specify an affiliation, or if the affiliation is
@@ -2619,7 +2584,7 @@ unknown, it should be the _JSON null_ as the _JSON value_ of this _JSON member_.
For example: For example:
``` <!---json--> ``` <!---json-->
"affiliation" : null, "affiliation" : null
``` ```
**NOTE**: The _JSON null_ is **NOT** enclosed in quotes! **NOTE**: The _JSON null_ is **NOT** enclosed in quotes!
@@ -2630,16 +2595,65 @@ For example:
``` <!---json--> ``` <!---json-->
"winning_entry_set" : [ "winning_entry_set" : [
{ "entry_id" : "2012_endoh1" }, {
{ "entry_id" : "2012_endoh2" }, "entry_id" : "2012_endoh1"
{ "entry_id" : "2013_endoh1" }, },
... {
{ "entry_id" : "2020_endoh1" }, "entry_id" : "2012_endoh2"
{ "entry_id" : "2020_endoh2" }, },
{ "entry_id" : "2020_endoh3" } {
"entry_id" : "2013_endoh1"
},
{
"entry_id" : "2013_endoh2"
},
{
"entry_id" : "2013_endoh3"
},
{
"entry_id" : "2013_endoh4"
},
{
"entry_id" : "2014_endoh1"
},
{
"entry_id" : "2014_endoh2"
},
{
"entry_id" : "2015_endoh1"
},
{
"entry_id" : "2015_endoh2"
},
{
"entry_id" : "2015_endoh3"
},
{
"entry_id" : "2015_endoh4"
},
{
"entry_id" : "2018_endoh1"
},
{
"entry_id" : "2018_endoh2"
},
{
"entry_id" : "2019_endoh"
},
{
"entry_id" : "2020_endoh1"
},
{
"entry_id" : "2020_endoh2"
},
{
"entry_id" : "2020_endoh3"
}
] ]
``` ```
(... as of Wed 23 Oct 2024 17:20:26 UTC.)
The `winning_entry_set` _JSON member_ holds _JSON array_ containing one or more `entry_id` _JSON member_s. The `winning_entry_set` _JSON member_ holds _JSON array_ containing one or more `entry_id` _JSON member_s.
There **MUST** be one and only one `winning_entry_set` and the _JSON value_ **MUST** There **MUST** be one and only one `winning_entry_set` and the _JSON value_ **MUST**
@@ -2717,17 +2731,10 @@ An `entry_id` is a string that identifies a winning entry of the IOCCC.
An `entry_id` is a 4-digit year, followed by an underscore, followed by a directory name. An `entry_id` is a 4-digit year, followed by an underscore, followed by a directory name.
For example, the `entry_id` associated with Cody Boone Ferguson's 2nd winning IOCCC entry For example, the `entry_id` associated with Cody Boone Ferguson's 2nd winning IOCCC entry
of 2020 is found under the following directory: of 2020 is found under the directory
[2020/ferguson2](2020/ferguson2/index.html).
``` The `entry_id` for that winning entry is `2020_ferguson2`.
2020/ferguson2
```
The `entry_id` for that winning entry is:
```
2020_ferguson2
```
Jump to: [top](#) Jump to: [top](#)
@@ -2747,12 +2754,9 @@ This file is created by the [cvt-submission.sh](bin/index.html#cvt-submission)
tool as part of the final steps to announce a new set of winning IOCCC entries. tool as part of the final steps to announce a new set of winning IOCCC entries.
Each winning entry has its own `.entry.json` filename of the form: Each winning entry has its own `.entry.json` filename of the form:
`YYYY/winner/.entry.json`
``` .. where _winner_ is the entry directory name, usually the name of the author.
YYYY/winner/.entry.json
```
where _winner_ is the entry directory name, usually the name of the author.
**IMPORTANT NOTE**: this file should **NOT** be manually modified! It is created **IMPORTANT NOTE**: this file should **NOT** be manually modified! It is created
by the [csv2entry](bin/index.html#csv2entry) tool when updating the manifest. by the [csv2entry](bin/index.html#csv2entry) tool when updating the manifest.
@@ -2879,7 +2883,7 @@ members:
##### `no_comment` ##### `no_comment`
``` <!--- json--> ``` <!--- json-->
"no_comment" : "mandatory comment: because comments were removed from the original JSON spec", "no_comment" : "mandatory comment: because comments were removed from the original JSON spec"
``` ```
Because the authors of the so-called JSON spec removed the ability to use comments in JSON Because the authors of the so-called JSON spec removed the ability to use comments in JSON
@@ -2892,7 +2896,7 @@ be the exact _JSON string_ as shown above.
##### `entry_JSON_format_version` ##### `entry_JSON_format_version`
``` <!---json--> ``` <!---json-->
"entry_JSON_format_version" : "1.2 2024-09-25", "entry_JSON_format_version" : "1.2 2024-09-25"
``` ```
This _JSON member_ holds the format version of the `.entry.json` JSON file. This _JSON member_ holds the format version of the `.entry.json` JSON file.
@@ -2910,7 +2914,7 @@ in conjunction with changes to [bin directory tools](bin/index.html).
##### `award` ##### `award`
``` <!---json--> ``` <!---json-->
"award" : "Third Place", "award" : "Third Place"
``` ```
This JSON string is the award title of the entry which the [Judges](judges.html) This JSON string is the award title of the entry which the [Judges](judges.html)
@@ -2919,7 +2923,7 @@ decide/decided when it becomes/became a winning entry.
##### `year` ##### `year`
``` <!---json--> ``` <!---json-->
"year" : 1984, "year" : 1984
``` ```
This JSON number is the year the contest ran, ended or was announced in. This JSON number is the year the contest ran, ended or was announced in.
@@ -2927,7 +2931,7 @@ This JSON number is the year the contest ran, ended or was announced in.
##### `dir` ##### `dir`
``` <!---json--> ``` <!---json-->
"dir" : "laman", "dir" : "laman"
``` ```
This JSON string is the subdirectory of the entry, **under** the year directory, This JSON string is the subdirectory of the entry, **under** the year directory,
@@ -2938,7 +2942,7 @@ one, one can determine the directory of the entry, here being
##### `entry_id` ##### `entry_id`
``` <!---json--> ``` <!---json-->
"entry_id" : "1984_laman", "entry_id" : "1984_laman"
``` ```
This is the ID of the entry in question and corresponds to the `entry_id` in the This is the ID of the entry in question and corresponds to the `entry_id` in the
@@ -2986,7 +2990,7 @@ for more information on `.info.json` files.
``` <!---json--> ``` <!---json-->
"author_set" : [ "author_set" : [
{ "author_handle" : "Mike_Laman" } { "author_handle" : "Mike_Laman" }
], ]
``` ```
This JSON **array** has a list of `author_handle`s that indicate who won this This JSON **array** has a list of `author_handle`s that indicate who won this
@@ -3326,7 +3330,7 @@ versions. Every Makefile has an `alt` rule but it will only do something if an
alternate version exists. To build all the entries along with any alternate code alternate version exists. To build all the entries along with any alternate code
you can do from the top level directory: you can do from the top level directory:
``` ``` <!---sh-->
make clobber everything make clobber everything
``` ```
@@ -4175,11 +4179,8 @@ FAQ on "[X11](#X11)"
for general information about X11. for general information about X11.
Once X11 is install and the X Window Server is running, one needs to compile Once X11 is install and the X Window Server is running, one needs to compile
and link with the two libraries, _GL_ and _GLU_: and link with the two libraries, _GL_ and _GLU_, which the Makefile should do if
you just run `make`.
``` <!---sh-->
cc ... -lGL -lGLU -L _location-where-X11-libs-are-installed_ -lX11
```
**NOTE**: The OpenGL development effort is being managed by [vulkan.org](https://vulkan.org). **NOTE**: The OpenGL development effort is being managed by [vulkan.org](https://vulkan.org).
We suggest you check out their resource for further information on OpenGL. We suggest you check out their resource for further information on OpenGL.
@@ -5702,7 +5703,7 @@ GitHub pull request that modifies an author's `author_handle.json` file.
For example, if a given `author_handle.json` file contained: For example, if a given `author_handle.json` file contained:
``` <!---json--> ``` <!---json-->
"url" : "https://www.example.com/employee/username", "url" : "https://www.example.com/employee/username"
``` ```
and you knew that the author has long ago left the `www.example.com` company, and you knew that the author has long ago left the `www.example.com` company,
@@ -5710,7 +5711,7 @@ and that they have a new faculty web page at `www.example.edu`, then you should
submit a GitHub pull request to change the above line to: submit a GitHub pull request to change the above line to:
``` <!---json--> ``` <!---json-->
"url" : "https://www.example.edu/faculty/deartment/user.name", "url" : "https://www.example.edu/faculty/deartment/user.name"
``` ```
Authors of IOCCC winning entries are kept in JSON files of the form: Authors of IOCCC winning entries are kept in JSON files of the form:
@@ -5801,7 +5802,7 @@ for information about the contents of these JSON files and how they are used.
For example, if a given `author_handle.json` file contained: For example, if a given `author_handle.json` file contained:
``` <!---json--> ``` <!---json-->
"location_code" : "ZZ", "location_code" : "ZZ"
``` ```
and you knew that the author was located in [Australia](location.html#AU) and you knew that the author was located in [Australia](location.html#AU)
@@ -5809,7 +5810,7 @@ and you knew that the author was located in [Australia](location.html#AU)
request** to change that line to: request** to change that line to:
``` <!---json--> ``` <!---json-->
"location_code" : "AU", "location_code" : "AU"
``` ```
See the See the