The entries 2004/hibachi and 2005/mynx have unobfuscated code now.
2004/hibachi has a configure script that is used along the lines of the
original entry (with some adjustments and fixes) and the hibachi.alt.c
had to have ctype.h included too. The directory src/localhost was copied
to src-alt/localhost but the rest of src/ was from Anthony. The Makefile
had to be updated to build this version.
2005/mynx does have a configure script but it is, just like the original
entry, unused and so the unobfuscated (in source-alt/) is also unused.
The mynx.alt.c was changed to mynx.alt2.c and the unobfuscated code was
made mynx.alt.c.
Updated manifest, rebuilt .entry.json and index.html files.
After a question is answered and taken care of (in one of 199[1-3]/ant -
not sure which one) issue #2513 can possibly be closed as complete
(though the manifest updates will have to be looked at more when 2004
and 2005 are reviewed).
The manifest entry_text for avgtime.sh is much better now and the
description by the author (which was missing) is now much better too (I
asked the author first if he wanted to provide something but he
suggested that 'you apply your wit "in a timely manner"'.
The unobfuscated code, which was put in deobfuscated/, has been turned
into alt code. In one case the already existing alt code was made alt2
and the unobfuscated code was alt. In the case of the ones with two C
files there, the one that did not require modification (to compile in
modern systems) were used as those are original.
In a few cases these changes suggested additional files: a test suite
Makefile for the alt code, a try.alt.sh script and maybe some other
things besides.
The bug status was updated for 2015/howe with a known bug: in particular
the test scripts do not work (at least not completely).
In the manifest all references (except for a file name that has not been
renamed - at least not yet) of 'deobfuscated' to 'unobfuscated': a minor
detail that might not matter much but it sounds ever so slightly better
(maybe). These other entries that had an entry_text change were
1995/garry and 2020/endoh2. Rebuilt .entry.json and index.html files for
this (and in the case of the moved code the index.html files also had to
be changed for that in addition to the Makefiles).
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.
Anthony/@SirWumpus kindly provided these files. The source code and
their Makefiles are in a deobfuscated/ subdirectory (for each of the
three entries) but running make alt
from the entry directory works. It uses the deobfuscated version's
Makefile but copies the compiled binary to the entry's directory to keep
things clean (deobfuscated code separate from the entry) to simplify
using the deobfuscated versions.
Entries that had a test suite Makefile have a new one for the
deobfuscated code and a try.alt.sh script was added to 1992/ant and
1993/ant but the entry_text is a bit different than the usual to
indicate that it's the deobfuscated version.
It might be that the way this is done should be reorganised some but
that can be decided on later.
The entries from 2004 and 2005 have not yet been added because some
decisions have to be made as those are the ones with a configure script.
The manifest was updated and the .entry.json and index.html files were
updated. It is not clear yet if the inventory_order is right but that
will be looked at in the next day or two.
Thank you Anthony!
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).
As the file is not actually code and does not give deobfuscated code but
rather shows how I obfuscated it (indirectly and directly) a better
name, if spoilers will not work, is obfuscation. Thus obfuscation.md and
obfuscation.html are the new names.
Manifest updated; regenerated .entry.json, index.html and other html
files that link to the html file.
In a heading/section (in obfuscation.html) I linked to two files that
are named.
In 1991 the code blocks in the html files should look better with
smaller screens. In one entry, rince, an image was added as the
formatting is too complicated to get right. The text was changed from
two columns to one column and then a screenshot was taken so that it's a
bit easier to see with smaller widths. This looks fairly good on mobile
phones too. The only downside, of course, is if the web pages ever
change to have a different background or code colour it won't match but
it did not look right with mobile phones. This required a manifest
update.
In 1992 one entry's html file defeated me for now so I had to stop. This
can be looked at later. The last entry I am committing changes to is
1991/buzzard.1. It was buzzard.2/buzzard.2.design.md that is a big
problem and will have to be done another time.
At the request of Landon (after I brought it up as a possibility) I have
reworded the Gold/Silver/Bronze Award titles in 2012 so that the
precious metal is first so it flows a bit better.
Why did I suggest this? Because Precious told me to!
Added testing procedure (markdown, html: testing-procedure.{md,html}).
Updated the recode.{md,html} and README.md for this as well.
Updated the hidden message file (enigma.html) for a bit more fun.
Updated manifest, rebuilt index.html and .entry.json.
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.
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.
The play.sh script entry_text refers to snake-colours.sh so
snake-colours.sh comes first. Also since it's a key part of the entry
they come before the html files.
The html files in 1986 (including 1986/marshall/compilers.html) look and
feel good. Format change (slight) in 1986/marshall/index.html.
The manifest update includes a fix for 1986/hague and this same change
in entry_text applies to files in a few other years as well.
To avoid problems the script now runs make find_missing_links at the
end. It does it in such a way, though, as to make sure everything is
fine before that. It runs the rule after everything is fine but if it
fails it tells them they do not have to run the script all over again
but they do need to fix the links and then run the appropriate make
rules in order to fix the html file(s). It does note that if you're in
doubt running 'make www' will be the safest bet.
There are two reasons the script does not run make www: first is that it
uses verbosity not used in the make rule and second is it offers to run
the quick-readme2index.sh script to go quicker if one knows that only
a few README.md files were modified. The script now warns that this will
only work if the README.md files have been changed (or timestamp
updated).
Many entry_text fields have been changed, some to make it more
consistent with others (though most likely some slipped through) and
others to make it more correct.
The recent commits which changed filenames are in this update but the
rest of the process will be done soon as part of the same pull request.
... including the index.{md,html} which was in all caps ..
The bin/README.md file (and index.html) was updated slightly with an
added comma: not strictly necessary but for some it might be easier to
read. This was discovered as I was going through the links (not done
checking them yet but so far so good).
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.
There was a typo which had Homer''s instead of Homer's. This has been
corrected in the tmp/year_prize.numbers, tmp/year_prize.csv,
2006/sloane/.entry.json, 2006/sloane/index.html and years.html files.
This is a fun one because the scripts that are used to update the
manifest did not report any problem because the problematic file (though
see below as I did rename another file too for very similar rationale,
also discussed below) actually exists on file system but when linked to
from a web server it does not exist. This is because the filename had
the html encodings for [ and ] (again see below) which the web server
interpreted as [ and ] but the file doesn't exist on the filesystem in
that form: instead it had the html encodings for those characters. This
file was
2011/dlowe/dlowe-aux-data/english-0/CIR_APE_08_doc%5B1%5D.txt
and it has been renamed to
2011/dlowe/dlowe-aux-data/english-0/CIR_APE_08_doc.txt
The other file h ad the literal [ and ] but as this is also not POSIX
safe the [ and ] plus what was in between it was removed. Thus the file
2011/dlowe/dlowe-aux-data/png-1/image_thumb[40].png
was renamed to just
2011/dlowe/dlowe-aux-data/png-1/image_thumb.png
Updated the manifest and regenerated the .entry.json and index.html
files.
As a side effect of the manifest and rebuild of the .entry.json and
index.html file two other entries were touched that somehow were not
done when I changed 'Best of show' to 'Best of Show' even though a git
diff will show the same thing (seemingly of course):
- "award" : "Best Of Show",
+ "award" : "Best of Show",
plus a diff in their index.html files.
Those entries are 1991/brnstnd and 2001/jason though I am not sure why
as I'm pretty sure other entries also had the same change made and they
did not show up here.
Nevertheless that problem should now be resolved and the links in
2011/dlowe manifest now work (at least those two have been checked for
validity: others will be checked when I verify format and links in that
entry which will not be done until after the top level html files and
the earlier years).
This fixes an inconsistency in case. The spreadsheet in tmp,
year_prize.numbers and the year_prize.csv files were updated also (with
the ./fix_csv.sh run under tmp/).
There was no need to manually update the index.html, any other html
files or .entry.json files as I used sgit(1) to change the case.
The endoh4.sh script is better described now. In the script itself it no
longer refers to try.sh but endoh4.sh.
Regenerated .entry.json and index.html file.
This is because it was used in the same way as the try scripts and it
matches better other entries and looks better with the manifest (makes
it easier to see what it is for).
Rebuilt manifest, generated .entry.json and index.html files.
The thanks file was updated accordingly.
This also removes carriage returns that macOS Numbers apparently adds
when exporting to CSV.
Only the manifest.csv and manifest.numbers were updated here as the
previous commit did everything as expected.
This was done by:
sgit -e 's/alt code/alternate code/g' . ; git co tmp/OLD_manifest
as well as updating the tmp/manifest.numbers spreadsheet and exporting
to the CSV file (though that would not strictly be necessary).
The way this works means that the update manifest script does not need
to be run as it sgit(1) touched the .entry.json files (any that needed
to be updated) and so would any index.html files. An example for both
.entry.json and index.html files being modified due to manifest is
2012/kang.
Numerous Makefiles were updated, any try scripts that had 'alt code'
instead of 'alternate code' and README.md/index.html files (unrelated to
the manifest as 'alt code' was used in other places too) and obviously
the manifest.numbers spreadsheet.
However to be safe I will do a run of the manifest script in a bit even
though it should not be necessary. If no commits are made it means all
is good and if any commits are made for the manifest it means that I
did not think of something (or else I made another change after this).
Although there were a few lines that I kind of looked over quickly, not
evaluating the files in question, those seemed in good state anyway.
Often that was binary files.
In some cases for example input more information was given but not in
all as it was not always clear what it should be and it was not always
clear that it was necessary. Some typos were fixed as well.
Rebuilt .entry.json and index.html files.
A few other files were also modified with some minor fixes like
2006/toledo2/README.md for one example. In that case I believe some
binary files were referenced as %%REPO_URL%% but that is incorrect.
These files were edited before the index.html files were rebuilt so they
should be fine.
It should be noted that although I have gone through the entire manifest
and it might be that issue #1933 can be closed there is still a chance
that when I go through the web pages that I might come across a problem
that I will fix at that time. This might or might not be needed but that
will be determined later.
Now might be a good time to run make www but I will worry about that
later (it might or might not even do anything, depending on what was
missed).
Changed in 1984/anonymous 'source code tattoo image' to 'source code and
tattoo image'.
Changed in 1984/mullender 'header file for gentab.c for compatibility
with 1984 systems' to 'gentab.c header file for compatibility with
systems in 1984'. The rationale here is that it's not 1984 systems but
systems in 1984. I would have kept the ordering of the wording the same
but that was more than 59 characters. The way it is worded now is not
necessarily better (other than not being literally incorrect - that is
if it's interpreted literally it is incorrect) but it's also not worse.
Minor format fix in 1985/shapiro/README.md.
Rebuilt index.html and .entry.json files.
This is a large update that modifies every .entry.json file and fixes
many others. The changes of every .entry.json file are as follows:
- change 'entry source' to 'entry source code' [0]
- change 'original source' to 'original source code' [0]
- change 'directory path from top directory' to 'directory path from top
level directory'
[0] This is for consistency purposes. Other options were pondered but as
the index.html files refer to 'Alternate code' this was the simplest way
to go about it and it also feels more natural. A question was whether to
have 'entry code' and 'original entry code' or to have the word 'source'
added to it but I decided upon including the word 'source'. Another
question has occurred to me is whether or not 'original source code'
should instead be 'original entry source code' but that can be decided
upon later as that occurred to me after much of the files were already
rebuilt. The consistency that this commit has made is for the README.md
sections and in particular 'Alternate code'. One might wonder if that
should be changed to 'Alternate source code' as now the manifest
includes 'source' in the 'entry code' and 'original code' but the
manifest itself is what was actually updated and having 'source' feels
more natural for submitted files. After all not all entries have
alternate code. These questions can be decided on when looking at the
index.html files that have been rebuilt.
Changed 'alt code' to 'alternate code' where this was not already done
(in the manifest). It is questionable whether this should be done in
markdown files or not (in the README.md files section it already is done
but not necessarily in other places).
Many files had incorrect descriptions that have been checked.
Renamed 2020/endoh2/spoiler/spoiler.{md,html} to index.{md,html} so one
can go to just 2020/endoh2/spoiler and see the web page. Although the
manifest of 2 020/endoh2/index.html will link to it and that's probably
how most people will notice it it seems useful especially as the web
page links to the different files in spoiler/ or at least refers to
them, giving a description (kind of like the manifest in
2020/endoh2/index.html).
Due to the above changes all the entries had their index.html files
regenerated too.
There were likely other changes and fixes as well.
What has NOT been done is a check over all items, typos or otherwise,
though some typos have been fixed. Nonetheless this commit goes a long
way to resolving issue #1933.
Updated thanks file both with a missing <div> id and added a manifest
improvements section as the manifest is quite important.
The uuencoded file isaak.encode was removed. Instead the output was put
in isaak.output.txt. This has the same manifest priority as the encoded
file. This file is strictly for historical remarks in the index.html
file and not needed beyond that. Perhaps it should be in the secondary
file list but that can be decided later.
The file isaak.alt.c is now compilable. It is the isaak.orig.c that is
not. The difference is with an old enough compiler/system it might be
that the alt version will work. In modern systems the isaak.c will work.
Manifest updated for the file changes.
Thanks file updated with this and possibly other earlier changes in
1988. 1988 is not done yet but as these problems were found working on
it I felt like I should commit them now too.
As the index.html/README.md files say 'Alternate code' the 'alternative
source' has been changed to 'alternate code'. Similarly the text 'script
to try alternative code' was changed to 'script to try alternate code'.
A mistake was made where something referred to as being the alt code was
not the alt code (or the other way round).
Changed 'alternate alternative code' (or something like that) to 'second
alternate code'. This happened in steps and it might not, now that I
think on it, be the best wording, but this can be addressed later.
Rebuilt html files and .entry.json files.
Changed 'description of entry in JSON' to 'entry summary and manifest in
JSON'.
Changed 'how to run' (for try scripts) to 'script to try entry'.
Changed 'how to run if you have the primes utility' to 'script to try
entry if you have the primes utility'.
Changed 'how to run alternative code' to 'script to try alternative
code'.
A number of other more specific (to particular entries or maybe even a
single entry, 2019/ciura if not any others) descriptions were also
changed.
Rebuilt index.html and .entry.json files.
We have fixed cases where markdown code blocks were not properly intended.
Updated `markdown.md` to discuss how markdown code blocks should be indented
and how blank lines should follow a markdown code block.
We used this shell script to find problematic code blocks:
```sh
find . -name '*.md' ! -name markdown.md -print | xargs pcregrep -M '^``.*\n[^|`\n \t]'
```
Ran `make www` to perform the above.
Added `bin/find-missing-links.sh` tool to check for
markdown links to missing local files.
Regarding the missing link tool:
```
Here be extended regular expression magic dragons! :-)
```
Added `make find_missing_links` to the top level Makefile.
Added `make find_missing_links` to `make www` and `make quick_www`.
Ran `make www` to perform the above.
TODO: Fix markdown links to missing local files.
Fixed stuff we broke by mistake, previously.
Ran `make www` to perform the above.
TODO: Fix stuff we broke by mistake doing the above.
TODO: Fix more broken markdown links.