From 0f8a0a3af95ab9da6ce775001c3d80e39d7f22e1 Mon Sep 17 00:00:00 2001 From: Landon Curt Noll Date: Wed, 28 Feb 2024 18:30:57 -0800 Subject: [PATCH] build remaining top level web pages The level judges.html, news.html, and index.html pages were converted to markdown. The `bin/gen-top-md2html.sh` tool was adjusted to build HTML from judges.md, news.md, and index.md. Modified the `bin/gen-top-md2html.sh` tool to build `bin/index.html` from `bin/README.md`. Modified the `bin/gen-top-md2html.sh` tool to build `inc/index.html` from `inc/README.md`. In `bin/gen-top-md2html.sh` changed VERISON from "1.0 2024-02-24" to "1.1 2024-02-28". Ran `gen_top_md2html` to perform the above. --- bin/gen-top-md2html.sh | 17 +- bin/index.html | 676 ++++++++++++++++++++++++++++++++++++++ inc/index.html | 146 +++++++++ inc/md2html.cfg | 32 ++ index.html | 279 +++++++++------- index.md | 53 +++ judges.html | 184 ++++++++--- judges.md | 8 + news.html | 715 +++++++++++++++++++---------------------- news.md | 232 +++++++++++++ 10 files changed, 1788 insertions(+), 554 deletions(-) create mode 100644 bin/index.html create mode 100644 inc/index.html create mode 100644 index.md create mode 100644 judges.md create mode 100644 news.md diff --git a/bin/gen-top-md2html.sh b/bin/gen-top-md2html.sh index db4b73451..f36f3fdfd 100755 --- a/bin/gen-top-md2html.sh +++ b/bin/gen-top-md2html.sh @@ -2,6 +2,8 @@ # # gen-top-md2html.sh - generate select top level HTML files from markdown files # +# We also generate the bin/index.html file from the bin/README.md file. +# # Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved. # # Permission to use, copy, modify, and distribute this software and @@ -50,7 +52,7 @@ TOP_MD_SET+=("faq") # set variables referenced in the usage message # -export VERSION="1.0 2024-02-24" +export VERSION="1.1 2024-02-28" NAME=$(basename "$0") export NAME export V_FLAG=0 @@ -76,9 +78,14 @@ export SITE_URL="https://ioccc-src.github.io/temp-test-ioccc" unset TOP_MD_SET TOP_MD_SET+=("CODE_OF_CONDUCT") TOP_MD_SET+=("README") +TOP_MD_SET+=("bin/README") TOP_MD_SET+=("bugs") TOP_MD_SET+=("contact") TOP_MD_SET+=("faq") +TOP_MD_SET+=("inc/README") +TOP_MD_SET+=("index") +TOP_MD_SET+=("judges") +TOP_MD_SET+=("news") TOP_MD_SET+=("thanks-for-help") # export NOOP= @@ -430,6 +437,14 @@ for name in "${TOP_MD_SET[@]}"; do continue fi export HTML_FILE="$name.html" + # bin/README is a special case + if [[ $name == bin/README ]]; then + HTML_FILE="bin/index.html" + fi + # inc/README is a special case + if [[ $name == inc/README ]]; then + HTML_FILE="inc/index.html" + fi # use the md2html.sh tool to form the HTML file, unless -n # diff --git a/bin/index.html b/bin/index.html new file mode 100644 index 000000000..cfd0a2294 --- /dev/null +++ b/bin/index.html @@ -0,0 +1,676 @@ + + + + + + + + + + + + + + + + + + + + + +The International Obfuscated C Code Contest + + + + + + + + + + + + +
+ IOCCC image by Matt Zucker +

The International Obfuscated C Code Contest

+

IOCCC tools used build and maintain the IOCCC web site

+
+ + + + +
+ + + + + + + + + +
+ + + + + + + + + +

bin

+

The directory holds bin directory holds tools +that build files, such as HTML content, for the official IOCCC web site.

+

For HTML content, the bin directory tools +makes use of HTML fragments from the inc +directory as well as various JSON files and other content from the IOCCC GitHub +repo.

+

bin tools

+

all-run.sh

+

Run a command on all winning entries.

+

For example:

+
bin/all-run.sh -v 3 bin/quick-readme2index.sh -v 1
+

Or for example:

+
bin/all-run.sh -v 3 bin/readme2index.sh -v 1
+

all-years.sh

+

Run a command on all IOCCC years.

+

For example:

+
bin/all-years.sh -v 1 bin/gen-year-index.sh -v 1
+

Or for example:

+
bin/all-years.sh -v 1 bin/chk-entry.sh
+

chk-entry.sh

+

Check of files required by an entry matches the entry’s manifest as +found in .entry.json.

+

For example:

+
bin/chk-entry.sh 2020/ferguson1
+

filelist.entry.json.awk

+

Generate the list of files in the entry’s manifest +.entry.json.

+

For example:

+
awk -f bin/filelist.entry.json.awk 2020/ferguson1/.entry.json
+

gen-authors.sh

+

Generate the top level /authors.html page.

+

Usage:

+
bin/gen-authors.sh -v 1
+

gen-location.sh

+

Generate the top level /location.html page.

+

Usage:

+
bin/gen-location.sh -v 1
+

gen-other-html.sh

+

Generate entry HTML files from markdown other than README.md to +index.html HTML files.

+

Usage:

+
bin/gen-other-html.sh -v 1
+

gen-top-md2html.sh

+

Generate a number of top level HTML pages for the IOCCC web +sites.

+

Usage:

+
bin/gen-top-md2html.sh -v 1
+

Examples of top level HTML pages built by this tool include:

+ +

gen-year-index.sh

+

Generate an index.html page for an given IOCCC year.

+

Usage:

+
bin/gen-year-index.sh -v 1 2020
+

gen-years.sh

+

Generate the top level /years.html page.

+

Usage:

+
bin/gen-years.sh -v 1
+

ioccc-status.sh

+

Updates the status.json file.

+

manifest.entry.json.awk

+

Output manifest table from a entry .entry.json file.

+

md2html.sh

+

This is the primary tool that forms IOCCC generated HTML content from +markdown files (permanent markdown files or temporarily generated +markdown files) and HTML fragments from the inc +directory.

+

The ../inc/md2html.cfg configuration +file is used by md2html.sh to drive the +generation process.

+

output-index-author.sh

+

Output author(s) Related HTML for for an entry’s index.html page.

+

output-index-inventory.sh

+

Output the inventory in HTML form for an entry’s index.html page.

+

output-year-index.sh

+

Output markdown of wining entry links for a given year.

+

pandoc-wrapper.sh

+

Wrapper tool to run pandoc.

+

quick-readme2index.sh

+

Runs readme2index.sh if the entry +directory does not have a non-empty index.hmtl file, or if +either .entry.json or README.md is newer than +the index.hmtl file.

+

This is useful when only a few entries have been modified (resulting +in an updated .entry.json file) or if the +README.md of a few entries have been changed.

+

While the readme2index.sh take a few +seconds to run, when applied to 300+ entries, the extra time can add +up.

+

If only a few index.hmtl files need updating, then this +command will only briefly pause while the slightly longer readme2index.sh is run:

+
bin/all-run.sh -v 3 bin/quick-readme2index.sh -v 1
+

NOTE: This command assumes that the relative +modification times for index.hmtl, +.entry.json, andREADME.md` are correct. If in doubt, +use:

+
bin/all-run.sh -v 3 bin/readme2index.sh -v 1
+

readme2index.sh

+

Convert a entry README.md into entry directory index.html.

+

sgi.sh

+

Sort .gitignore content from stdin to stdout.

+

We sort with lines starting with # first. We sort with lines starting +with * second. We sort with lines that do not start with [#!*] third. We +sort with lines starting with ! fourth.

+

This tool is used by sort.gitignore.sh.

+

sort.gitignore.sh

+

Sort a .gitignore in a entry directory.

+

Usage:

+
bin/sort.gitignore.sh -v 1 YYYY/dir
+

Suggested usage:

+
bin/all-run.sh bin/sort.gitignore.sh -v 1
+

subst.default.sh

+

Print default substitutions.

+

subst.entry-index.sh

+

Print substitutions for a entry index.html.

+

subst.entry-navbar.awk

+

Output substitutions for navbar on behalf of a entry.

+

subst.year-index.sh

+

Print substitutions for a year level index.html.

+

subst.year-navbar.awk

+

Output substitutions for navbar on behalf of a year level +index.html.

+

tar-entry.sh

+

Form a compress tarball for an entry.

+

Usage:

+
bin/tar-entry.sh -v 1 YYYY/dir
+

Suggested usage:

+
bin/all-run.sh -v 3 bin/tar-entry.sh -v 1 -W
+

tar-all.sh

+

Form the compressed tarball for all IOCCC years and all IOCCC +entries.

+

Usage:

+
bin/tar-all.sh -v 1
+

tar-year.sh

+

Form a compress tarball for an IOCCC year.

+

Usage:

+
bin/tar-year.sh -v 1 YYYY
+

Suggested usage:

+
bin/all-years.sh -v 3 bin/tar-year.sh -v 1 -W
+

How IOCCC +HTML content is built

+

The md2html.sh tool is the primary tool that +is used to form all IOCCC related HTML pages for the official IOCCC web site.

+

Nearly all IOCCC related HTML pages are built from markdown files, +from either permanent markdown files or temporary generated markdown +files, as well as HTML fragments from the inc directory.

+

Most HTML content is built from permanant markdown files, such as a +README.md markdown file found in each entry directory. Some +HTML content are generated from temporary markdown files. These +temporary markdown files are produced by tools in the bin directory and exist only while the tool is +running.

+

In addition to converting markdown to HTML, the canonical way that +HTML content is built uses, by default, files from the inc directory, of the form:

+
*.default.html
+

By using command line options of the form

+
-H phase=name
+

where phase is the name of an HTML phase, a non-default +file may be used. For example:

+
-H topnav=up2index
+

will cause inc/topnav.up2index.html instead +of inc/topnav.default.html to +be used during the topnav HTML phase.

+

If name is dot (i.e., “.”), then the given HTML phase is +skipped. For example:

+
-H footer=.
+

will cause no HTML content to be produced during the footer +HTML phase.

+

HTML phases

+

The following HTML phase files are used to build HTML content:

+
    +
  1. inc/top.default.html
  2. +
  3. inc/head.default.html
  4. +
  5. inc/body.default.html
  6. +
  7. inc/header.default.html
  8. +
  9. inc/topnav.default.html
  10. +
  11. inc/begin-row.default.html
  12. +
  13. inc/begin-leftcolumn.default.html
  14. +
  15. inc/sidenav.default.html
  16. +
  17. inc/end-leftcolumn.default.html
  18. +
  19. inc/begin-rightcolumn.default.html
  20. +
  21. inc/before-content.default.html
  22. +
+

Phases 11-19 are reserved for future use.

+
    +
  1. ((insert ‘before tool’ output))
  2. +
  3. ((insert ‘pandoc wrapper tool’ output))
  4. +
  5. ((insert ‘after tool’ output))
  6. +
+

Phases 23-29 are reserved for future use.

+
    +
  1. inc/after-content.default.html
  2. +
  3. inc/end-rightcolumn.default.html
  4. +
  5. inc/end-row.default.html
  6. +
  7. inc/footer.default.html
  8. +
  9. inc/bottom.default.html
  10. +
+

Phases 35-39 are reserved for future use.

+

In the above HTML phase numbers, except during HTML phase numbers +20-29, symbols of the form %%TOKEN%% are substituted. Any %%TOKEN%% +printed by the ‘before tool’ (-b tool), the ‘pandoc wrapper tool’ (-p +tool), and the ‘after tool’ (-a tool) are ignored (i.e., not +substituted).

+

See the tool readme2index.sh for an +example of how HTML phases are implemented.

+

Getopt +phase processing of the command line

+

The command options are evaluated in the following getopt phases:

+

Getopt phase 0

+

In getopt phase 0 we parse command line options and save all +arguments for the end of the final command line.

+

Depending on the program, the argument at the end is directory under +topdir, or it is a file under topdir.

+

In getopt phase 0 is the only getopt phase where “-d topdir” and “-c +md2html.cfg” may be used.

+

Getopt phase 1

+

In getopt phase 1 we execute each -o “output tool” from getopt phase +0, parsing the output as a command line.

+

The -o “output tool” may be given optstr from “-O tool=optstr”, +followed by the phase 0 argument.

+

The -o “output tool” is not allowed to output another “-o tool”, nor +a “-O tool=optstr”. Instead an -o “output tool” may execute another -o +“output tool” merge the output into its own.

+

Getopt phase 2

+

In getopt phase 2 we parse the “cfg_options” from the first +“md2html.cfg” line matched by saved argument.

+

The match is made with the (possibly modified) phase 0 argument.

+

Getopt phase 3

+

In getopt phase 3 we execute each -o “output tool” from getopt phase +2, parsing the output as a command line.

+

The -o “output tool” may be given optstr from “-O tool=optstr”, +followed by the phase 0 argument.

+

The -o “output tool” is not allowed to output another “-o tool”, nor +a “-O tool=optstr”. Instead an -o “output tool” may execute another -o +“output tool” merge the output into its own.

+

Command line option order

+

Most command line options override earlier copies of the same option. +However in the case of ‘-H phase=name’, later ‘-H phase=name’ only +overrides an earlier use of ‘-H’ for the same ‘phase’ only. Also in the +case of ‘-s token=value’, later ‘-s token=value’ only overrides an +earlier use of ‘-s’ for the same ‘token’ only.

+

Output tools

+

An “output tool” may be used to add certain additional command line +options to be processed.

+

IMPORTANT: An “output tool” will print each command line option / +argument on a separate line. So for example, if an “output tool” wishes +to convey:

+
-s TITLE='IOCCC entry locations' -H topnav=top-of-site
+

The “output tool” would output the following 4 lines:

+
-s
+TITLE='IOCCC entry locations'
+-H
+topnav=top-of-site
+

The command line opions printed by an “output tool” are processed +after all command line options, and all options from a matching line +from the md2html.cfg file, and before any filename arguments on the +command line.

+

For exmaple:

+
command [command_options ..] [cfg_options ..] [output_tool_options ..] [--] [filename_arg ..]
+

Here the ‘command’ first processes any command line options, then it +processes ‘cfg_options’ obtained from this file from a 1st match of a +given file_glob, then it processes ‘output tool’ (i.e., -o tool) options +found in ‘command_options’, and ‘cfg_options’, then an optional – (end +of all options), then zero of more ‘filename_arg’ filename +arguments.

+

The ‘-o tool’ must NOT output any ‘-o tool’ options as ‘-o tool’ is +NOT RECURSIVE. A ‘-o tool’ is free, however, to execute other ‘-o tool’ +output tools and merge the output from those tools into its own.

+

Special -E exitcode option

+

When ‘-E exitcode’ is evaluated, the application will exit with the +‘exitcode’ value. If one wishes to also output a message to stderr, the +‘-e string’ must come BEFORE any ‘-E exitcode’ in the command line.

+

Substitution tokens

+

All tokens (i.e., strings of the form ‘%%token%%’) MUST be +substituted (by some -s token=value) in all HTML output, except during +phase numbers 20-29 (i.e., except ‘before tool’ output, pandoc wrapper +output, and except ‘after tool’ output), or command will exit non-zero, +unless -S is given. If -S is given, only a warning about un-substituted +tokens will be written to stderr.

+

The command line of tools in the bin +directory, and perhaps modified via md2html +config file file may change to using a different filename for a +given phase.

+

For example when forming the HTML from +2020/ferguson2/chocolate-cake.md, a different “topnav” +navigation bar is needed. So instead of the usual top navigation bar +that normally directs people to the previous entry for the year, or go +up to the year page, or to the next entry for the year, a top navigation +bar to just go up to the entry’s main page is needed. A line in the md2html config file file that refers to +2020/ferguson1/chocolate-cake.md may specify use of +topnav.up2index.html instead of using the +topnav.default.html default.

+

The HTML phase may be skipped resulting in no HTML output during a +given phase. Furthermore, forming HTML content from a given markdown +file altogether.

+

See comments in the md2html config +file file for details. See also, the tool readme2index.sh for an example of how such +command lines are used.

+

Use CAUTION when modifying +inc files

+

Some of the files under this directory are used to form +MOST of the HTML content on the official IOCCC web site.

+

These files are used to form MOST of the HTML +content on the experimental web +site.

+

… and in particular files under inc +that are of the form (called default HTML files) …:

+
*.default.html
+

… contain default content used to form IOCCC HTML / IOCCC web +pages.

+

Instead of editing the default HTML files in order to fix a special +web page, consider making a copy of the default file and modifying the +md2html config file to refer to the copy +instead. That way your special case situation will not impact +MOST of the HTML content.

+

Why +do we do not use certain well-known HTML technologies

+

You may wonder why we need these files in the first place. You may +wonder why we even need the tools in the bin +directory when there other solutions available to form web pages.

+

Static web +pages only

+

Here are some reasons why we are using these files and special tools +to create HTML content / IOCCC web pages:

+

We host official IOCCC web site +via GitHub pages. As of the time +this file written, only static web pages are +supported.

+

We cannot use server side +include

+

We use static web pages, so use of “server +side include” is not available to the IOCCC.

+

For example, Apache SSI “#include” does not work on GitHub pages.

+

We cannot use a back-end +database

+

We use static web pages, so use of +“back-end database” is not available to the IOCCC.

+

We +cannot use non-GitHub web servers

+

The GitHub pages have the +distributed server capacity needed to handle the huge download +volume or Slashdot effect +that happens when a IOCCC entries are published.

+

Most so-called low cost web hosting sites have a somewhat hidden +excessive bandwidth charge and/or cap bandwidth when the volume gets too +high, and/or do not have the infrastructure that can handle the Slashdot +effect.

+

The IOCCC had experience with people offering web mirrors and even +free hosting only to find that the generous benefactor moves on, or +their service is purchased by someone else who is not so generous. While +it is possible that GitHub might someday suffer a similar fate, for the +time being we are betting that GitHub will remain willing to host the +IOCCC.

+

The official IOCCC web site is, +after all, primarily C source code with some supporting documentation. +As such it is a natural fit for GitHub and GitHub pages.

+

We cannot use the HTML object +tag

+

The < object > HTML tag does not work for our +needs.

+

The browser context relationship between the HTML content holds the +HTML tag does not extend into the content that the tag includes. For +example, menu bars will not operate as specified by the ioccc CSS.

+

We cannot use the HTML embed +tag

+

The < embed > HTML tag does not work for our +needs.

+

This tag wants one to specify the width and height +in pixels. Use of a percentage is not officially supported even if some +browsers might do so. Our Responsive Web Design on the ioccc CSS needs to be responsive to small-sized +cell phone-like screens, mid-sized table-like screens, as well as +large-sized desktop-like screens. Specifying a width and +height in pixels will not work well in all of those screen size +contexts.

+

We cannot use the HTML iframe +tag

+

The < iframe > HTML tag does not work for our +needs.

+

This tag wants one to specify the width and height +in pixels. Use of a percentage is not officially supported even if some +browsers might do so. Our Responsive Web Design on the ioccc CSS needs to be responsive to small-sized +cell phone-like screens, mid-sized table-like screens, as well as +large-sized desktop-like screens. Specifying a width and +height in pixels will not work well in all of those screen size +contexts.

+

We cannot use +JavaScript to include content

+

We do not use JavaScript to include HTML content.

+

While the IOCCC may use JavaScript in the future to directly render +things like C source code, we will do so in such a way that someone will +be able to view official IOCCC web +site content with JavaScript disabled.

+

The IOCCC will NOT MANDATE USE OF JavaScript to view +official IOCCC web site.

+

For this reason, we cannot use JavaScript include HTML content.

+

IOCCC terms

+

The following IOCCC terms apply to tools, JSON files, and the +directory structure of this repo.

+

author

+

An individual who was an author of at least one winning +IOCCC entry.

+

Some authors have submitted more than one IOCCC entry that won. Some +winning IOCCC entries have more than one author.

+

author_handle

+

An author_handle is string that refers to a given author +and is unique to the IOCCC. Each author has exactly one +author_handle.

+

For each author_handle, there will be a JSON file of the +form:

+
author/author_handle.json
+

Because the author_handle is used to form a JSON +filename, the string must be lower case POSIX safe string. Furthermore, +the author_handle must be an ASCII string that matches this +regexp:

+
^[0-9a-z][0-9a-z_]*$
+

Default author_handle’s do not have multiple consecutive +_ (underscore) characters. Nevertheless, multiple +consecutive _ (underscore) characters are allowed. Contest +submitters who wish to override the author_handle may do +so.

+

The author_handle 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 +if they so desire.

+

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.

+

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.

+

NOTE: even if the directory name is not anonymous the +above rules apply as in in the case of 2005/anon.

+

Anonymous author_handle’s match this regexp:

+
Anonymous_[0-9][0-9][0-9][0-9][.0-9]*$
+

entry

+

An IOCCC entry that won an award for given IOCCC.

+

A entry has one more more authors.

+

Each entry is contained under its own directory. The +parent of the entry directory is the year’s directory.

+

While in most cases a entry consists of files under a +entry’s directory, there are a few cases where a entry +directory contains subdirectories.

+

Use of subdirectories under a entry directory is +discouraged and may be limited to previous entrys that used +them.

+

NOTE: In the past, the term winner was used in instead of +today’s term of entry.

+

year

+

A year is a 4 character string. Most years are 4-digit +strings that represent the year. Some special year strings +are possible, such as mock. Non-numeric +year strings are lower case.

+

A year string matches this regexp:

+
[0-9a-z][0-9a-z][0-9a-z][0-9a-z]
+

The year directories reside directly below the top level +directory.

+

.year

+

Each year will have a file directory under it named:

+
.year
+

The contents of the .year file is the year string of the +directory. For instance, 2020/.year has the +string: 2020.

+

dir

+

A dir is a POSIX safe string that holds an entry.

+

A dir is a string that matches this regexp:

+
^[a-z][0-9a-z.-]*$
+

Each +_entry_ is under its own individual directory. This directory is directly under ayear` +directory.

+

entry_id

+

A string that identifies the winning entry. The string is of the +form:

+
year_dir
+ + + + + + + +
+ + + + +
+ + + + + + + + + + + + + diff --git a/inc/index.html b/inc/index.html new file mode 100644 index 000000000..17f171af0 --- /dev/null +++ b/inc/index.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + +The International Obfuscated C Code Contest + + + + + + + + + + + + +
+ IOCCC image by Matt Zucker +

The International Obfuscated C Code Contest

+

Content used by bin tools to help form HTML files

+
+ + + + +
+ + + + + + + + + +
+ + + + + + + + + +

inc

+

The inc directory holds content that is used +by the tools in the bin directory.

+

Why the name inc?

+

We use inc because “include” would be misleading for both C and +because the contents of HTML files under inc are +not really included by the web server or the browser. Content of HTML +files is processed by tools the bin +directory. Processing can include substitution of strings of the form +%%CURDS%% with some command line supplied value by the tool in +question.

+ + + + + + + +
+ + + + +
+ + + + + + + + + + + + + diff --git a/inc/md2html.cfg b/inc/md2html.cfg index 592540dae..a1c15e84b 100644 --- a/inc/md2html.cfg +++ b/inc/md2html.cfg @@ -259,6 +259,38 @@ years.md -D ./ +bin/README.md + -H + topnav=. + -o + bin/subst.default.sh + -s + TITLE=The International Obfuscated C Code Contest + -s + DESCRIPTION=Tools used to build and maintain the IOCCC web site + -s + KEYWORDS=IOCCC, tools, web site tools, bin + -s + HEADER_2=IOCCC tools used build and maintain the IOCCC web site + -D + ../ + +inc/README.md + -H + topnav=. + -o + bin/subst.default.sh + -s + TITLE=The International Obfuscated C Code Contest + -s + DESCRIPTION=IOCCC inc files + -s + KEYWORDS=IOCCC, inc, include files + -s + HEADER_2=Content used by bin tools to help form HTML files + -D + ../ + # Year level README.md files have a special year navbar [12][0-9][0-9][0-9]/README.md diff --git a/index.html b/index.html index deeda1922..078555a68 100644 --- a/index.html +++ b/index.html @@ -1,126 +1,185 @@ - - - - - - - - - The International Obfuscated C Code Contest - - + + + + + + + + + + + + + + + + -
IOCCC
Logo by winner Matt Zucker

-
The International Obfuscated C Code -Contest

+ + + + +The International Obfuscated C Code Contest + + + -
-
THIS IS AN EXPERIMENTAL IOCCC WEB SITE
-

-

IMPORTANT: This is NOT the official IOCCC web site!

-

-Please visit -www.ioccc.org -for the official IOCCC web. -

-Please do NOT bookmark nor link to this >experimental web site: -

-https://ioccc-src.github.io/temp-test-ioccc/ -
-

-When this experiment is finished, this site will go away! -

-This test web tree is part of the temp-test-ioccc GitHub repo: -

-https://github.com/ioccc-src/temp-test-ioccc -
-

-This web site will be undergoing major changes, so expect many broken links, typos and other problems. -If you wish to recommend changes (understanding that things may be rapidly changing out from under your copy), -then consider making pull requests against the -temp-test-ioccc GitHub repo. -


+ + -

-

-IOCCC home page | -Winning entries | -People who have won -

-IOCCC News | -How to enter the IOCCC | -FAQ -

-Known Bugs & (Mis)features | -Fixing IOCCC entries | -Fixing the web site | -Fixing winner info | -Thanks for the help -

-The judges | -Contacting the IOCCC -
+ -

- -


+ + -

The IOCCC is currently CLOSED.

+
+ IOCCC image by Matt Zucker +

The International Obfuscated C Code Contest

+

+
-

Right now, you CANNOT register as a contestant with the IOCCC,
-nor can you submit an entry because the IOCCC is yet NOT open. + + -

Please see the watch the IOCCC news below for information on the next IOCCC. +

-

You may also check on the status.json for the current status of the IOCCC. + + - -


+
-

Goals of the Contest

-

-

    -
  • Obfuscate: tr.v. -cated, -cating, -cates. -
    1. -
      1. To render obscure. -
      2. To darken. -
      -
    2. To confuse: his emotions obfuscated his judgment.
      -[LLat. obfuscare, to darken : ob(intensive) + Lat. fuscare,
      -to darken < fuscus, dark.] -obfuscation n. obfuscatory adj
      -
    -
    -
  • The IOCCC: -
      -
    • To write the most Obscure/Obfuscated C program within the rules. -
    • To show the importance of programming style, in an ironic way. -
    • To stress C compilers with unusual code. -
    • To illustrate some of the subtleties of the C language. -
    • To provide a safe forum for poor C code. :-) -
    -
+ + -
+ +
+ +
+ +
+ +
+ +
+ - -

IOCCC news

+ + -IOCCC news has moved to news.html. +
-
+ + - - - -
Creative Commons CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International License© Copyright 1984-2023, -Landon Curt Noll and Leonid A. Broukhis. - All rights reserved.

-This work is licensed under the -Creative -Commons CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International License.

-If you do use this work in some form, the -IOCCC judges would appreciate (but does not require) -if you were to send us a note about your use.
+
- - + + + + + + + + +

THIS IS AN EXPERIMENTAL +IOCCC WEB SITE

+

IMPORTANT: This is NOT the official IOCCC web +site!

+

Please visit www.ioccc.org for the +official IOCCC web.

+

Please do NOT bookmark nor link to this experimental web +site!

+

When this experiment is finished, this site will go +away!

+

This test web tree is part of the temp-test-ioccc +GitHub repo.

+

This web site will be undergoing major changes, so expect many broken +links, typos and other problems. If you wish to recommend changes +(understanding that things may be rapidly changing out from under your +copy), then consider making pull requests against the temp-test-ioccc +GitHub repo.

+

Suggestion for visitors

+

Explore the Winning Entries sorted by year, +or sort by People who have won.

+

Obfuscate defined:

+

tr.v. -cated, -cating, -cates.

1a. To +render obscure.
1b. To darken.

+2. To confuse: his emotions obfuscated his +judgment.
    [LLat. obfuscare, to darken : ob(intensive) + Lat. +fuscare,
    to darken < fuscus, dark.] -obfuscation +n. obfuscatory adj.

+

Goals of the Contest

+

The goals of the IOCCC:

+
    +
  • To write the most Obscure/Obfuscated C program within the +rules.
  • +
  • To show the importance of programming style, in an ironic way.
  • +
  • To stress C compilers with unusual code.
  • +
  • To illustrate some of the subtleties of the C language.
  • +
  • To provide a safe forum for poor C code. :-)
  • +
+

The IOCCC is currently +CLOSED.

+

Right now, you CANNOT register as a contestant with +the IOCCC,
nor can you submit an entry because the +IOCCC is yet NOT open.
Please see +the watch the IOCCC news below for +information on the next IOCCC.
You may also check +on the status.json for the current status of +the IOCCC.

+ + + + + + + +
+ + + + +
+ + + + + + + + + + + + + diff --git a/index.md b/index.md new file mode 100644 index 000000000..63e0769d1 --- /dev/null +++ b/index.md @@ -0,0 +1,53 @@ +# THIS IS AN EXPERIMENTAL IOCCC WEB SITE + +**IMPORTANT: This is NOT the official IOCCC web site!** + +Please visit [www.ioccc.org](https://www.ioccc.org/index.html) for the official IOCCC web. + +Please do **NOT** bookmark nor link to this [experimental web site](https://ioccc-src.github.io/temp-test-ioccc/)! + +When this experiment is finished, this site **will go away**! + +This test web tree is part of the [temp-test-ioccc GitHub repo](https://github.com/ioccc-src/temp-test-ioccc). + +This web site will be undergoing major changes, so expect many broken links, typos and other problems. +If you wish to recommend changes (understanding that things may be rapidly changing out from under your copy), +then consider making pull requests against the [temp-test-ioccc GitHub repo](https://github.com/ioccc-src/temp-test-ioccc). + + +# Suggestion for visitors + +Explore the [Winning Entries](years.html) sorted by year, or sort by [People who have won](authors.html). + + +# Obfuscate defined: + +tr.v. -cated, -cating, -cates. +

+**1a.** To render obscure.
+**1b.** To darken. +

+**2.** To confuse: his emotions obfuscated his judgment.
+    [LLat. obfuscare, to darken : ob(intensive) + Lat. fuscare,
+    to darken < fuscus, dark.] -obfuscation n. obfuscatory adj. + + +# Goals of the Contest + +The goals of the IOCCC: + +* To write the most Obscure/Obfuscated C program within the rules. +* To show the importance of programming style, in an ironic way. +* To stress C compilers with unusual code. +* To illustrate some of the subtleties of the C language. +* To provide a safe forum for poor C code. :-) + + +# The IOCCC is currently **CLOSED**. + +Right now, you **CANNOT register** as a contestant with the IOCCC,
+nor can you submit an entry because the **IOCCC** is yet **NOT open**. +
+Please see the watch the [IOCCC news](news.html#news) below for information on the next **IOCCC**. +
+You may also check on the [status.json](status.json) for the current status of the **IOCCC**. diff --git a/judges.html b/judges.html index e557f99b0..dd0aa0250 100644 --- a/judges.html +++ b/judges.html @@ -1,60 +1,144 @@ - - - - - - The Judges - - + + + + + + + + + + + + + + + + -
IOCCC
Logo by winner Matt Zucker

-
The International Obfuscated C Code -Contest

+ + + + +The International Obfuscated C Code Contest + + + -

-

-IOCCC home page | -Winning entries | -People who have won -

-IOCCC News | -How to enter the IOCCC | -FAQ -

-Known Bugs & (Mis)features | -Fixing IOCCC entries | -Fixing the web site | -Fixing winner info | -Thanks for the help -

-The judges | -Contacting the IOCCC -
+ + -
+ -

The Judges

+ + -

Leonid A. Broukhis -- http://www.mailcom.com/main.shtml

-

Landon Curt Noll -- http://www.isthe.com/chongo/

+
+ IOCCC image by Matt Zucker +

The International Obfuscated C Code Contest

+

The Judges of the IOCCC

+
+ + -

If you want to contact the IOCCC judges, please see Contacting the IOCCC.

+
-
+ + - - - -
Creative Commons CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International License© Copyright 1984-2023, -Landon Curt Noll and Leonid A. Broukhis. - All rights reserved.

-This work is licensed under the -Creative -Commons CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International License.

-If you do use this work in some form, the -IOCCC judges would appreciate (but does not require) -if you were to send us a note about your use.
+ + + + + +
+ + + + + + + + + +

The Judges

+ +

If you +want to contact the IOCCC judges, please visit:

+

Contacting the IOCCC

+ + + + + + + +
+ + + + +
+ + + + + + + + + + + + + diff --git a/judges.md b/judges.md new file mode 100644 index 000000000..4fc11e81e --- /dev/null +++ b/judges.md @@ -0,0 +1,8 @@ +# The Judges + +* [Leonid A. Broukhis](http://www.mailcom.com/main.shtml) +* [Landon Curt Noll](http://www.isthe.com/chongo/) + +### If you want to contact the IOCCC judges, please visit: + +[Contacting the IOCCC](contact.html) diff --git a/news.html b/news.html index 8eaef98ea..2a38e9f2b 100644 --- a/news.html +++ b/news.html @@ -1,412 +1,341 @@ - - - - - - - - - News from The International Obfuscated C Code Contest - - + + + + + + + + + + + + + + + + -
IOCCC
Logo by winner Matt Zucker

-
The International Obfuscated C Code -Contest

+ + + + +The International Obfuscated C Code Contest + + + -
-
THIS IS AN EXPERIMENTAL IOCCC WEB SITE
-

-

IMPORTANT: This is NOT the official IOCCC web site!

-

-Please visit -www.ioccc.org -for the official IOCCC web. -

-Please do NOT bookmark or link to this -experimental web site: -

-https://ioccc-src.github.io/temp-test-ioccc/ -
-

-When this experiment is finished, this site will go away! -

-This test web tree is part of the -temp-test-ioccc GitHub repo: -

-https://github.com/ioccc-src/temp-test-ioccc -
-

-This web site will be undergoing major changes, so expect many broken links, typos and other problems. -If you wish to recommend changes (understanding that things may be rapidly changing out from under your copy), -then consider making pull requests against the -temp-test-ioccc GitHub repo. -


+ + -

-

-IOCCC home page | -Winning entries | -People who have won -

-IOCCC News | -How to enter the IOCCC | -FAQ -

-Known Bugs & (Mis)features | -Fixing IOCCC entries | -Fixing the web site | -Fixing winner info | -Thanks for the help -

-The judges | -Contacting the IOCCC -
+ -
+ + - -

IOCCC news

+
+ IOCCC image by Matt Zucker +

The International Obfuscated C Code Contest

+

IOCCC News

+
- - - - - - - - - -

Older news has been archived, but is not currently available.

- -
- - - - -
Creative Commons CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International License© Copyright 1984-2023, -Landon Curt Noll and Leonid A. Broukhis. - All rights reserved.

-This work is licensed under the -Creative -Commons CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International License.

-If you do use this work in some form, the -IOCCC judges would appreciate (but does not require) -if you were to send us a note about your use.
- - - + diff --git a/news.md b/news.md new file mode 100644 index 000000000..53c1fc9a1 --- /dev/null +++ b/news.md @@ -0,0 +1,232 @@ +# 2023-02-29 + +We continue to make good progress on web site. In the [temp-test-ioccc GitHub repo](https://github.com/ioccc-src/temp-test-ioccc) we have made nearly 4600 changes to date! + +All web pages, including this one, are now constructed from markdown files and/or JSON data files using tools found in the [bin](bin/index.html) directory. + + +# 2023-05-22 + +We have been busy preparing for an important / significant update to this web site. In the [temp-test-ioccc GitHub repo](https://github.com/ioccc-src/temp-test-ioccc) we have made nearly 2645 changes to date. + +``` +While you are free to look at the [temp-test-ioccc GitHub repo](https://github.com/ioccc-src/temp-test-ioccc), +please **do not link to it** as this repo and related web site will disappear once the main +[IOCCC winner repo](https://github.com/ioccc-src/winner) has been updated. + +Also be aware that the [temp-test-ioccc GitHub repo](https://github.com/ioccc-src/temp-test-ioccc) +is undergoing rapid changes. There are broken links and other things in mid-change. + +Once we are ready to update the [IOCCC winner repo](https://github.com/ioccc-src/winner) +and its associated [www.ioccc.org](index.html) web site, +we will post a news article warning of the pending change that is about to arrive. +``` + +These 2645+ changes in the [temp-test-ioccc GitHub repo](https://github.com/ioccc-src/temp-test-ioccc) +include diverse things such as: + +* Moving IOCCC entries into their own separate directories +* Fixing lots and lots of typos +* Fixing Makefiles and code to allow for nearly all winners to be compiled on modern systems +* Reworking the Makefiles to use a consistent set of rules +* Reworking the Makefiles to compile under gcc and clang +* Replacing the various hint files with a README.md markdown that is more consistent across IOCCC years +* Setting up a system whereby authors of IOCCC entries may update their own contact information via a GitHub pull request +* Setting up to generate the top level [years.html](years.html) file via a tool +* Setting up to generate the top level [authors.html](authors.html) file via a tool +* etc. + +We have lots more to do. Our work is not finished. We just wanted to let you know that we are making good progress. + +In regards to the next IOCCC. We **do plan to hold a 28th IOCCC**. However before we do that, we plan +to hold what will be called **IOCCCMOCK**, a beta-test IOCCC where we plan to test the new +[mkiocccentry tool](https://github.com/ioccc-src/mkiocccentry), a tool that will package +submissions to the IOCCC. + +We are working on an improved **IOCCC submit server** +that will allow those who submit entires to be informed about the status of their submission. +This **IOCCC submit server** will be beta tested in the **IOCCCMOCK**. + +We are working on a method to rapidly post the winners of an IOCCC. No longer will winners +be subject to a long delay between announcing that they have won and their code being made available. +No longer will procrastination delay the public seeing the winning code. Instead the +**announcement of the winners of an IOCCC will be done by posting the winning code via a GitHub commit.** +Any corrections, improvement, typo fixes and other fixes will be applied to the winners via GitHub pull requests: +by the authors and/or other interested 3rd parties. + +All the above represent one of the most significant (and useful) changes to the IOCCC since it started back in 1984. +While we are doing lots of testing, we are sure that issues, mis-features and even bugs will be uncovered +when we **go live**. For this reason, we plan to beta-test the process by holding an **IOCCCMOCK**. +The **IOCCCMOCK** will be like a regular IOCCC except that the judges **will not** judge the code. +Instead, people will be invited to submit a simple _"Hello, world!"_ style program. +Awards will be given to those who: + +* submit the best pull requests that fix a bug +* submit the best pull requests that fix a typo +* make the best suggestions for improvements +* have the most fun / make us laugh +* etc. + +The **IOCCCMOCK** will allow is to restart the beta-test contest should a major problem be discovered +that needs urgent fixing. +The **IOCCCMOCK** will us to beta-test the new IOCCC process without putting the hard work of those +who submit real IOCCC entries at risk. + +Stay tuned! + + +# 2023-01-30 + +We added to the +[status.json](status.json) page, +a _"status_date"_ JSON member whose value is the date +of the most recent [status.json](status.json) modification, +in _date(1)_ format. + +We also added to the +[status.json](status.json) page, +a _"latest_news"_ JSON member whose value is the date +of the most recent news item. + +```json +"status_date" : "Mon Jan 30 02:28:44 PST 2023", +"latest_news" : "Mon Jan 30 02:28:44 PST 2023" +``` + + +# 2022-12-18 + +As per the suggestion of [Toni Mikkola](https://fosstodon.org/@Virtaava@home.social) +(_@Virtaava@home.social_) we now maintain a +[status.json](status.json) page on this web site. + +In addition to the IOCCC-style _easter egg_, you may count on +the JSON status page having a JSON member with name of **"contest"** +that will have a value of either **"closed"** or **"open"**. +When a future **IOCCC** is announced or the IOCCC is currently open, +the JSON member with name of **"contest"** will change from +**"closed"** to **"open"**. + +Additional JSON members be added describing the contest such as +the IOCCC contest number, open date, close date, timezone, etc. +The details of such additional JSON members are _TBD_. + +When an open IOCCC closes, we won't instantaneously update the +[status.json](status.json) page. +Instead you will have to rely on the additional JSON information +and/or read the [IOCCC news](#news), +and/or follow us on Mastodon via **@ioccc@fosstodon.org**. + + +# 2022-11-29 + +We are plan to abandon our +[IOCCC Twitter feed](https://twitter.com/ioccc) +in favor of our new [IOCCC Mastodon](https://fosstodon.org/@ioccc) feed. + +Our Mastodon username is: **@ioccc@fosstodon.org**. + +``` +Please note: As of the date of this posting, our account was just setup, +so there isn't much to read there, yet. +``` + +In the future we plan to use Mastodon as our official announcement platform. +This will include announcing: + +* IOCCC news updates +* Start of a new IOCCC +* Updates on the IOCCC judging process +* Who won the IOCCC +* et**C**. :-) + +When registering for a new IOCCC, we will no longer ask for an optional twitter handle. +Instead, you will be asked if you wish to provide a Mastodon username when you submit your IOCCC entry. +Use of Mastodon is **NOT** required to enter the IOCCC, but nevertheless is encouraged. +Proving a Mastodon username will be entirely **optional**. + +Non-mastodon users can follow the IOCCC postings via: +[fosstodon.org/@ioccc](https://fosstodon.org/@ioccc). + +If you do not yet have a Mastodon account, you may obtain a **free mastodon account via**: +[joinmastodon.org](https://joinmastodon.org). + +If you do have / obtain a Mastodon account, **please do us a favor and follow the IOCCC at**: + +``` +**@ioccc@fosstodon.org** +``` + +The IOCCC wishes to thank the good folk running the +[fosstodon.org](https://hub.fosstodon.org/about/) +Mastodon hub. +Their technology focused +[Fosstodon Hub](https://hub.fosstodon.org) +is made possible by volunteers, +and those who voluntarily +[support](https://hub.fosstodon.org/support/) the cost of their server. + +Stay tuned in Mastodon as we update you on our progress towards the next IOCCC! + + +# 2022-11-19 + +Source code has been released for version **0.8.1 2022-11-19** of the +[mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), +a GitHub repo that includes the official iocccsize tool, +and a tool will form a compressed tarball of their entry. + +We are working on a submit server that will allow a registered IOCCC contestant +to upload the above mentioned compressed tarball: when the contest is open of course. + +Once we reach version 1.0, we plan to invite the public to test and comment. + +We plan to hold in 2023, what we will call **IOCCCMOCK**, a trial IOCCC contest where the +judges will go through the motions (without judging the content) of an IOCCC: +testing the above mentioned tools and testing the submit server. + +We are working on complete rebuild of this web site as well. + + +# 2022-01-15 + +Source code has been released for version **0.24 2022-01-15** of the +[mkiocccentry tool](https://github.com/ioccc-src/mkiocccentry), +a tool that is based on, and is containing, the official iocccsize tool, +will form a compressed tarball that a registered IOCCC contestant +will upload to the submit server (when the contest is open of course). + +# 2021-12-27 + +[The Judges](/judges.html) +are continuing to work on re-tooling how we run the IOCCC. +We are writing tools under various repositories our +[IOCCC GitHub organization site](https://github.com/ioccc-src). + +**We plan to hold IOCCC28 in 2023.** +Sorry for the delay, but we think you will appreciate the re-tooling +when it is completed. +Stay tuned! + + +# 2021-10-21 + +[The Judges](/judges.html) +are re-tooling how we run the IOCCC. +Our goal is to build a smoother, more rapid process centered around +[GitHub](https://github.com/ioccc-src/winner). + +For example, when we announce the winners, +we will do so by committing their code to the +[Winning entries](/years.html) +of the IOCCC repo, so that people will be able immediately +view the winning source. + +We plan to refactor and modernize the IOCCC web site. +We also plan to build a new and improved way to submit entries the next IOCCC. +As a result of all this work we need to do, +**we plan to hold IOCCC28 in 2023 instead of 2021**. +Sorry for the delay, but we think you will appreciate the re-tooling +when it is completed. + +**Stay tuned for how you may be able to help in the IOCCC redesign for IOCCC28!**