The `display_as` field in an `.entry_json` file must match
the regex `^[a-z][0-9a-z]*$` now. This is needed to reduce
errors during the final round while converting a potential
submission to entry form.
Modify `1992/buzzard.2/.entry.json` and
`1993/rince/.entry.json` to change `display_as` field
to use lower case.
Correct `2012/omoikane/.entry.json` to correctly
reflect changes made by commit 2955e5d07e
and commit 2955e5d07e.
Change `bin/cvt-submission.sh` to verify that the `display_as`
matches the above regex.
Changed `bin/cvt-submission.sh` VERSION from "2.2.2 2025-06-30"
to "2.3.0 2025-07-02".
Rebuild all tarballs, both at the entry and the year level
due recent changes to `var.mk`, `1337.mk`, and `ioccc.css`.
Rebuild sitemap due to the changes above.
Ran `make update` to test and perform the above.
The genpath rule uses `${RM}` to remove files, and touches `.tmp.genpath` after removing it.
Updated "_YYYY/Makefile_" files, and the `template/Makefile.year` template.
Updated year level tarballs to incorporate the modified "_YYYY/Makefile_" file.
Updated sitemap.
Tested the above via `make update` on macOS.
The menu in all html pages for the FAQ was fixed to link to the step 0
(of how to enter the contest) and also it was renamed ('Enter the
IOCCC').
I also went through the most important sections of the FAQ (how to
enter and the mkiocccentry related questions) and checked the
register.html, pw-change.html and submit.html pages. It is possible I
have missed something but I think it's in pretty good shape nonetheless.
It now translates the characters '|' (pipe), '=' (equals) and '%'
(percent).
Checks were added in md2html.sh in the -s token=value so that token
cannot contain an = (equal), | (pipe) or a % (percent) and the value
cannot contain a | (pipe).
The reason that we cannot disallow a ';' or '&' is because the html
entities use those characters so if the sed script were to translate the
problematic characters it would cause a problem in the script.
Ran make www which updated 1988/robison/index.html and
1990/theorem/index.html.
1986/bright/README.md was fixed with the number of blank lines between
sections.
We move the "_Thanks for the help_" out from under the "Entries"
menu and under the "About" menu to better balance the menus.
Besides, "_Thanks for the help_" is more **about** the IOCCC itself.
The sections have been modified a fair amount. The Entries menu has been
extended to have: Fixing entries, Updating author info, Thanks for the
help. The first two were moved from FAQ and the last one from About.
The rationale for these, in order: entries and authors have to do with
entries and most of the help involves entries. It also has to do with
website but in 'about' it does not seem the right place, unless maybe it
is renamed to 'Credits' or something (I am not suggesting this one way
or the other). This one is debatable but that was the rationale.
The Status menu has been extended to have: Markdown guidelines and
Security policy. The rationale is that the markdown guidelines are part
of contest guidelines and the security policy is about the status of the
entries and how if there are any security problems they will not be
addressed (instead of about the IOCCC).
The FAQ was extended to have: Compiling entries, Running entries, How to
help. The reason to not have compiling and running entries under Entries
is because this is 'how to' and also the menu was too long. How to help
seems like a good idea under FAQ too (was in About).
About was extended to have the new 'about.html' page (from about.md).
This is a rare case where a new file is useful as it fits under 'About'.
The menu now is: Home page, About the IOCCC, The Judges, Contact us. I
was pondering the 'About [the IOCCC]' at the top and also naming it
'About us' but it seemed like a link to index.html was necessary and as
for 'about us' it seemed less clear as to whether it was about the
judges or the contest itself. The FAQ has been updated slightly for
this.
After further inspection the bin/index.html and the inc/index.html links
were removed from the about section.
With these changes, renaming an item or slight reordering
notwithstanding, I believe that #2006 is probably in good shape.
The mobile About menu was missing the IOCCC markdown guidelines. This
has been added to the mobile menu but moved to 'Status' which is where
guidelines are (it has been renamed to be 'IOCCC Markdown Guidelines' to
match the style of the other items in that menu).
The About menu now has two more links, one for the website tools and the
other for the include files of the tools. It might be, looking at the
generated html files, better to have another menu instead, but what that
should be is unclear. The reason it might be better is because the
'About' menu is rather long. In retrospect it might be better to not
have the script include files in the html files but this can be decided
and dealt with later.
The script bin/find-missing-links.sh now ignores the directory NOTES/. A
better approach might be using git ls-files --exclude but a quick test
did not work right. Another option, at least for NOTES/, might be to use
'git ls-files --exclude-standard'.
The bin/index.html file has been updated.
Run make www to rebuild all html files.
A number of question answers have been merged and shortened somewhat.
Fix link in the menu of all html pages and the inc/ files that was
broken due to renaming an anchor.
The guidelines and rules have had a link fix (to the FAQ) as well as
some additional points added about the mkiocccentry toolkit.
More work in the FAQ needs to be done, including with the how to enter
the IOCCC, but as so much work has been done already I have decided to
make the commit to get these many important changes out of the way.
We add an initial "_title_" and "_abstract_" to all entry `.entry.json` files.
The `bin/csv2entry.sh` tool reads the `summary.csv` file and
loads the "_title_" and "_abstract_" to entry `.entry.json` files.
Changed `bin/csv2entry.sh` VERSION from "1.3 2024-09-23"
to "1.4 2024-09-27".
Perform `make csv2entry` to perform the above and test under macOS.
The `bin/cvt-submission.sh` tool adds "_title_" and "_abstract_" to the
.entry.json based on the `.info.json` file.
Changed `bin/cvt-submission.sh` VERSION from "1.2 2024-09-23"
to "1.3 2024-09-27".
The `bin/entry2csv.sh` tool forms the `summary.csv` file
based on the "_title_" and "_abstract_" fields found in .entry.json files.
Changed `bin/entry2csv.sh` VERSION from "1.3 2024-09-23"
to "1.4 2024-09-27".
Perform `make entry2csv` to perform the above and test under macOS.
Added `-H` and `header=with-header-3` to the `bin/md2html.cfg`
for the configuration entry for `[12][0-9][0-9][0-9]/*/README.md`.
Changed `bin/md2html.sh` VERSION from "1.6 2024-08-17"
to "1.7 2024-09-27".
All entry `index.html` files now list the "_abstract_" in a new
`<h3>abstract</h3>` header.
Changed `bin/subst.entry-index.sh` VERSION from "1.6 2024-09-23"
to "1.7 2024-09-27".
Removed `summary.csv`.
Added `summary.csv` and `summary.numbers` to `.gitignore`.
Sorted the result with `bin/sgi.sh`.
Perform `make quick_www` to perform the above and test under macOS.
Perform `make www` to perform the above and test under macOS.
The PR #2662 introduced TAB characters into entry `.entry.json` files
and mal-formatted `author_handle` JSON members.
To restore canonical JSON formatting, we did:
```sh
find [12][90][89012][0-9] -name .entry.json -print | xargs -n 1 bin/jfmt-wrapper.sh -v 1
```
BTW: We have written a tool, currently untested, to do this. We plan to also
add a new fix JSON format rule to the top level `Makefile`.
Performed `make www` to accomplish the above and to test under macOS.
A number of rules have been moved from entry `Makefile`s into the
`1337.mk` include file to make it easier for these common rules to be
updated or modified globally (by modifying the `1337.mk` include file).
The entry level `Makefile`s are now similar in form to the
/Makefile.example](https://github.com/ioccc-src/mkiocccentry/blob/master/Makefile.example)
file from the other repo.
The following make rules were moved into the `1337.mk` include file:
- `make indent.c`
- `make install`
- `make diff_orig_prog`
- `make diff_prog_orig`
- `make diff_alt_prog`
- `make diff_prog_alt`
This simplifies the entry level `Makefile`s so that they mostly reflect
the specifics of the particular entry.
Mentioned in FAQ 4.2, that the make diff rules are in the `1337.mk` include file.
Fixed invalid TAB character in `faq.md`.
Removed `make clean` directives that removed `indent.c`. This file is now
removed via `make indent_clean`, a clean rule that also removes `indent.c`.
Removed `make clobber` directives that removed sandwich, This file is now
removed via `make indent_clobber`, a clean rule that also removes `sandwich`.
Added `make indent_clean` and `make indent_clobber` rules into the top level
`Makefile` and the year level `YYYY/Makefile`.
Performed `make quick_www` to accomplish the above and to test under macOS.
There is also a fix that fixes a format problem with
the `author_set`.
Used `bn/jfmt-wrapper.sh` to reformat JSON with:
```sh
find * -name '*.json' -print0 | xargs0 -n1 -t bin/jfmt-wrapper.sh
```
We improve entry `index.html` navbar links by allowing the
next and previous to link across years.
The `make genpath` now forms `.allyear`, which is a
sorted contamination of all YYY level `.year` files.
Updated `make help` to reflect the `make genpath` functionality.
Updated FAQ 6.8 to talk about the `.allyear` file.
Fixed links to `.top` and `.allyear' to refer to GitHub.
Changed `bin/subst.entry-navbar.awk` VERSION from "1.2 2024-03-02"
to "1.3 2024-08-02".
Changed `bin/subst.entry-index.sh` VERSION from "1.3.5 2024-08-05"
to "1.4 2024-08-09".
Performed `make www` to accomplish the above and to test under macOS.
Amongst the changes here is that we do not need to have the hex or html
code (numbers) for open and close parentheses (in links) as there are
names. '(' is & followed by lpar; and the ')' is the same but 'rpar;'
instead. This makes it easier to remember and type and it generates the
same html as well (they are all valid). Now the markdown files are
consistent in this (in some cases hex was used and in others the html
code).
Although many markdown files were updated no html files needed to be
updated as it generates the same html. Even so I ran the appropriate
rules to do so just to verify this.
Updated 1337 hacker rulz to version 7.
Added `1337.mk` to contain the updated 1337 hacker rulz (v7).
We use an optional include of `1337.mk` (or `../1337.mk`,
or `../../1337.mk`) to include the 1337 hacker rulz.
Changed `make deep_magic` to `make more_magic`.
Changed `bin/tar-entry.sh` VERSION from "1.3.7 2024-07-22"
to "1.3.8 2024-07-23".
Changed `bin/tar-year.sh` VERSION from "1.2.5 2024-07-22"
to "1.2.6 2024-07-23".
Add `make new_entry` to `YYYY/Makefile` and `template/Makefile.year`.
Change `make new_year` to use `sort -n -u`.
Made minor debug message fixes to `bin/new-year.sh`.
Changed `bin/new-year.sh` VERSION from "1.3 2024-07-23"
to "1.3.1 2024-07-23".
Improved `bin/add-dir.sh` to update `YYYY/Makefile` with
the new entry directory name.
Changed `bin/add-dir.sh` VERSION from "1.0 2024-07-21"
to "1.1 2024-07-23".
Performed `make www` to accomplish the above and to test under macOS.
We move `tmp/format-headers.sh` into `bin/format-headers.sh`.
We also add a few missing empty lines to `README.md`.
We add `bin/format-headers.sh` to the `bin/README.md`.
We run `bin/format-headers.sh` to perform the above.
Performed `make www` to accomplish the above and to test under macOS.
Instead of code blocks the bug / (mis)features statuses are quoted
rather than in a code block. In the case that there is more than one a
line break was added at the end of all but the last one.
A bug status was renamed to be slightly more correct (maybe more than
one was renamed for the same purpose but at least one was).
The bug statuses in the quotes are now bold to let them stand out
better.
We quasi-canonicalized markdown links to FAQ entries.
**IMPORTANT NOTE**: This is a useful step in completing issue #2417. This commit is consistent with the top level TODO comment requirements. Nevertheless, this changes made by this commit needs to be examined and in some cases improved.
A link to an FAQ entry is of the form:
```
FAQ on "[the link text](....faq.html#string)"
FAQ on "[the link text](....faq.html#string)"
```
The "FAQ" is at the start of the line, or in rare cases is preceded only by whitespace.
The reference to the FAQ starts outside of the markdown link with the string **FAQ ON "**.
After the markdown link is a **"** followed by either the end of line or a single punctuation character such as a period or comma.
We reduced the size of "the link text" that refer to an FAQ to at most 3 words. In some cases the sentence and/or text surrounding the markdown link to a FAQ may need to be further adjusted to better accommodate this new style.
**IMPORTANT NOTE**: References to a FAQ entry are on a separate line.
p.s. When linking to the `faq.html` file itself, we use markdown of the form "`the [IOCCC FAQ](..../faq.html)`" and place the word "the" outside of the "IOCCC FAQ" link text.
Given the above system (and because references to an FAQ entry is on a separate line), the following command shows links to FAQ entries, sorted by FAQ entry "link #name" so that one may evaluate the way a given FAQ entry is referenced:
```sh
find * -name '*.md' -print0 | xargs0 grep -E '^[[:space:]]*FAQ on "' | sed -e 's/^\([^:]*\):\( *FAQ on "[^#]*\)#\([^)]*\)\()".*\)$/#\3\t\1\t\2#\3\4/' | sort
```
The above command shows the value of consistency when it comes to FAQ references.
**NOTE**: There are a few differences on how a given FAQ is references. That is probably OK as there is NOT an "total mandate" that all references to a given FAQ must have the same "link text" for example. On the other hand if references to a given FAQ can be identical, that might be helpful. We are certain that in some contexts the "link text" might need to change.
Should we decide to change the way FAQ are referenced, we will be able to modify identify and modify them with greater ease.'
Examine the changes made by this commit and adjust and/or improve as needed.
Performed `make www` to accomplish the above and to test under macOS.
The location of the link is in the About menu under the 'Contacting the
IOCCC' and above 'Thanks for the help'. At first I had it at the very
bottom, under 'IOCCC markdown guidelines', but it seemed better to have
it closer to contacting the IOCCC. This is the same location in the no
JavaScript menu (which, for those who do not know or forget, is not a
requirement except for some screen sizes).
The top level Makefile has a new 'security' rule. Updated make help.
Typo fixes in make help.
SECURITY.html has had a few updates as well: change the wording of entry
code is unsupported (it now says 'ALL CODE IN ALL IOCCC ENTRIES IS
UNSUPPORTED!!') and it now links to the mkiocccentry repo and how to
report a possible security vulnerability in that repo; as that IS
supported - and since there was reference to discussing security
concerns is in SECURITY.html - even though the entries will not receive
security updates - it seemed a good idea to have a link to report such
security issues in the mkiocccentry repo. Perhaps the FAQ needs to be
updated for this too.
In the line in README.md and index.html files that said:
### NOTICE to those who wish for a greater challenge
I added a ':' at the end of the line.
There were some entries that had a link fix in the index.html file but I
only looked up through 1995/leo as those still have to have a 'look and
feel' check and it would just slow things down.
We add the following level-3 header to help people identify text
they may wish to skip if they wish for a greater challenge:
```
```
After that notice we add:
```
**If you want a greater challenge, don't read any further**:
just try to understand the program via the source.
If you get stuck, come back and read below for additional hints and information.
```
And sometimes follow with:
```
```
Or sometimes follow with:
```
```
Where the alt code impacts a "greater challenge", we add instead:
```
**If you want a greater challenge, don't read any further**:
just try to understand the program without looking at the Alternate code.
If you get stuck, come back and look at the Alternate code.
```
And where a given command impacts a "greater challenge", we add instead:
```
**If you want a greater challenge, don't read any further**:
just try to understand the program without running the command below.
If you get stuck, come back and run the following command:
```
Perform `make www` to perform the above and test under macOS.
In most cases the word was changed to 'obfuscation' as it was about
obfuscation, not deobfuscation. In some cases like 1995/leo since the
file was (in 1995/leo) about a secret switch it was changed to
'secret.md' (and 'secret.html') but there were others like that as well.
One entry had the words 'spoiling the size rule' but this had been
changed to 'deobfuscating the size rule' which was obviously wrong.
In the latter YYYY/README.md files the judges had written after some
entries (brief summaries) '...
...We'll stop spouting spoilers now. Have fun exploring all the
entries!
but that was changed to:
...We'll stop spouting deobfuscation information now. Have fun
exploring all the entries!
which wasn't really about deobfuscation but just a brief summary of what
the entries did.
And in the most problematic case (at least for me :-), 2018/ferguson) I
had put a joke in:
... but it's the only Easter egg I won't spoil
but it was changed to 'won't deobfuscate' which not only is not what it
is but it spoilt the joke.
In some cases the word was changed back to 'SPOILER' (or similar) but in
most cases not. I believe it should be better now. There are some
caveats, however, as below.
Although make find_missing_links is okay I do not remember if this will
catch links that refer to '%%REPO_URL%%' or other pandoc tokens. This
means I might have to go back to some earlier years to verify links are
okay. That should not take that much time I hope.
It might also be that some wording can still be improved some but it is
hoped this will be discovered when checking links and looking over the
manifest (which obviously changed).
There are many fixes made but a few questions remain so when I reach
those years I will address those then. Unfortunately, due to
infrastructure work right now, this is all I can say even though there
are a number of things I'd like to say.
Given how problematic leading tabs in markdown files can be,
we have expanded all leading tabs in markdown files by:
```sh
find * -type f -name '*.md' -print |
while read -r file; do
rm -f "$file.tmp" ;
expand < "$file" > "$file.tmp" ;
mv -f -v "$file.tmp" "$file" ;
done
```
Given the previous changes to `bin/pandoc-wrapper.sh` and other recent
commits and recent pull requests, the were were **NO** changes to
any HTML files. This is a **good thing** as the expression goes.
No there are no leading tabs in any markdown files.
A check to catch any re-introduction of leading tabs
into any markdown file is on the way.
BTW: We do not have anything against leading tabs in files,
even though we have had to deal with their impact on forming
HTML from markdown files (as well as the calc source code).
It is just that this is one of those cases where tabs conflict
(sometimes caused by people wanting to change the classic
8-space tab model) with a desired outcome.
Perform `make www` to perform the above and test under macOS.
That is to say in the bugs file it will look something like:
STATUS: INABIAF - please DO NOT fix
but as a html file it is already bold as a heading. This means there is
no need in the index.html file to have the explicit **DO NOT** as it's
in a code block and it is not consistent in what is in bugs.html. For
instance 1984/mullender had:
STATUS: INABIAF - please **DO NOT** fix
but this meant the index.html file had the '**'s surrounding the DO NOT
which is not consistent with bugs.html.
When `bin/pandoc-wrapper.sh` encounters a fatal error, it will
leave behind `debug.input.md` and `debug.output.html`.
Added `debug.input.md` and `debug.output.html` to `.gitignore`.
The `.gitignore` file comment noew refers to `sgi.sh` not sgi.
Changed `bin/pandoc-wrapper.sh` VERSION from "1.6.2 2024-04-18"
to 1.6.3 2024-06-22" to preform the above.
Perform `make www` to perform the above and test under macOS.
While not strictly necessary, replacing the two ASCII tab characters
in the markdown copyright comment makes it easier to detect problematic
TAB indentation within markdown files.
After this commit, only 90 markdown files have leading ASCII TAB
characters. And again, while not strictly necessary, we can consider
running expand on those 90 markdown files to see what effect that
might have on the HTML files they produce.
Replace leading ASCII TAB characters with multiples of 8 ASCII SPACE
characters (the default action of the `expand(1)` tool) might have
an negative effect on some HTML formatting where **hack-a-round**
formatting was attempted to fix broken indentation caused by
problematic ASCII TAB characters.
Think of this as a baseline for evaluating leading
TAB characters within markdown files.
TODO: Consider either using `expand(1)` to replace leading ASCII
TAB characters with multiples of 8 ASCII SPACE characters AND/OR
modifying the appropriate `bin` tool to convert leading ASCII TAB
characters into multiples of 8 ASCII SPACE characters.
Make it consistent with my improvement to bin/gen-years.sh: the entry
awards in the links (to each entry) are now in bold and so are the link
names. This helps them stand out a bit more.
The script set the URL for the tarball of all entries in the year to:
$YYYY/$YYYY.tar.bz2 but the link is relative so for 1984, for example,
it would link to 1984/1984/1984.tar.bz2 which obviously is a 404.
I also changed the formatting and wording of the link. It now is all
bold and it says instead (for example with 1984): 'Download all winning
entries from 1984'. Before it still referred to 'entry source' but it is
all entries and more than just the source.
This commit does not mean that the YYYY/index.html files have been
checked (though it's likely that all should be okay at this point) but
the manifest of entries and the tarball of all entries of the year
should at least be good.
It should be 'Location of winning authors' (as it is now) but by mistake
there was an extra space ('Location of winning authors'). Obviously
this is a huge commit as every html file with a menu (almost all) had to
be updated.
A few page names were changed and menu link (titles) were changed too.
By page names it means either DESCRIPTION or HEADER_2 in
bin/md2html.cfg. Although it looks better and is more consistent, there
might be one or two that can be further improved.
Naturally every html file that is markdown based was updated.
This is a very large commit not only because I forgot to run make www
after updating the menus but I also forgot to do that after the update
to some of the award titles (only quick-readme2index.sh was used).
There is a typo fix in bin/README.md.
This commit does mean that md2html.cfg has to be added to bin/README.md
but that can be done later.
The steps run to verify this works okay:
make www
git status
git diff
git add -u
make update
git status
git restore $(git check)
The last is important as it is not time for make update. 'git check' is
an alias:
git diff --name-only
A lot of the award titles that had more than one word capitalised were
changed to just one word capitalised, the first. Some were changed to
have multiple words capitalised. This happened when it was something
like '... prize' or '... award'. An exception to this is 2020/ferguson1:
'Don't tread on me award'. This is because I am not quite sure if I like
'Don't Tread On Me Award' or if it should be 'Don't Tread on Me Award'
(probably not that). For some like 'Grand Prize' or 'Bill Gates Award'
it's simple but I'm not so sure for my Snake entry of 2020. I will try
changing it and comparing it side-by-side to see which looks nicest.
This commit should make it easier to update the form of the award titles
in that they should all be consistent (or more consistent if not
completely) though it should be noted that the macOS Numbers application
(spreadsheet) is case-insensitive. A reason I did not change 'Don't
tread on me award' to 'Don't Tread On Me Award', yet, besides the above
reasons, is that it's a longer title and I am not sure how I like that
many words capitalised. Still it's a title of a slogan/whatever so it
might be better that way. This will be determined in the near future.
The tmp/year_prize.numbers had the text size increased a fair bit as
the default is too small for my pitiful vision (I changed it within
reason as it can become harder in another way if it's too big - 16"
MacBook Pro screen). One of the columns was also widened as it was too
short even for the smaller size.