Improve thanks-for-fixes.md order

Moved thanks for individual entries to the top.

Added head headers to make it easier to find thanks for a given year.

Moved non-entry based thanks to the Miscellaneous section tag the bottom.

Removed miscellaneous comments that were redundant with the FAQ.
This commit is contained in:
Landon Curt Noll authored and GitHub committed 2023-11-24 03:25:06 -08:00
1 parent 0f43387c81
commit e62280acd5
1 file changed
+198 -234
+198 -234
View File
@@ -3,240 +3,7 @@
.. and thanks for all the fish. :-) .. and thanks for all the fish. :-)
## Thank you honor roll # 1984
There are a number of people who have contributed to several thousand changes,
fixes and important improvements and one who has literally (or numerically :-) )
contributed thousands, that we wish to thank.
We call out the extensive contributions of [Cody Boone
Ferguson](https://www.ioccc.org/winners.html#Cody_Boone_Ferguson) who is
responsible for most of the improvements and fixes including many **EXTREMELY
HARD bug fixes** like
[1988/phillipps](/thanks-for-fixes.md#1988phillipps-readmemd),
[1992/vern](/thanks-for-fixes.md#1992vern-readmemd),
[2001/anonymous](/thanks-for-fixes.md#2001anonymous-readmemd),
[2004/burley](/thanks-for-fixes.md#2004burley-readmemd) and
[2005/giljade](/thanks-for-fixes.md#2005giljade-readmemd), making entries like
[1985/sicherman](/thanks-for-fixes.md#1985sicherman-readmemd) and
[1986/wall](/thanks-for-fixes.md#1986wall-readmemd) not need `-traditional-cpp`
(all **EXTREMELY HARD**), fixing entries to work with clang (some being
**EXTREMELY HARD** like
[1991/dds](/thanks-for-fixes.md#1991dds-readmemd)) or as much as possible (like
[1989/westley](/thanks-for-fixes.md#1989westley-readmemd), a true masterpiece
that is **INCREDIBLY HARD, _MUCH, MUCH MORE SO_ than any other fix!**), porting
entries to macOS (some being **EXTREMELY HARD** like
[1998/schweikh1](/thanks-for-fixes.md#1998schweikh1-readmemd)), fixing code like
[2001/herrmann2](/thanks-for-fixes.md#2001herrmann2-readmemd) to work in both
32-bit/64-bit which *can be* **EXTREMELY HARD**, providing alternate code
where useful/necessary, fixing possible/removing dead links,
typo/consistency fixes, improving **ALL _Makefiles_** and writing
[sgit](https://github.com/xexyl/sgit) that we installed locally to easily run
`sed` on files in the repo to help build the website. **THANK YOU VERY MUCH**
for your extensive efforts in helping improve the IOCCC presentation of past
IOCCC winners and fixing almost all past entries for modern systems!
[Yusuke Endoh](https://www.ioccc.org/winners.html#Yusuke_Endoh) supplied a
number of important bug fixes to a number of past IOCCC winners. Some of those
fixes were **EXTREMELY TECHNICALLY CHALLENGING** such as
[1989/robison](/thanks-for-fixes.md#1989robison-readmemd),
[1990/cmills](https://github.com/ioccc-src/temp-test-ioccc/blob/master/thanks-for-fixes.md#1990cmills-readmemd),
[1992/lush](/thanks-for-fixes.md#1992lush-readmemd) and
[2001/ctk](/thanks-for-fixes.md#2001ctk-readmemd). **THANK YOU VERY MUCH** for
your help!
A good number of the [past winners of the
IOCCC](https://www.ioccc.org/winners.html) tested, identified and helped correct
and/or improve the write-ups of fellow IOCCC winners for the year that they won.
The list of those past winners is too long to mention: nevertheless the [IOCCC
judges](https://www.ioccc.org/judges.html) **VERY MUCH APPRECIATE** those who
helped improve the presentation of their fellow IOCCC winners.
## Thank you list since 2021 Jan 01
To avoid having to change numerous "_README.md_" files to add thank you notes,
we centralize them below.
The [IOCCC judges](https://www.ioccc.org/judges.html) wish to recognize the many
important contributions to the IOCCC presentation of past IOCCC winners.
We are pleased to note the many contributions, **made since 2021 Jan 01**,
on a winner by winner basis.
## Note about fixes and inconsistencies with the original code and remarks
Invariably when an entry is fixed and it is not made an alt version (sometimes
it is worth an alt version and other times not - it all depends on what was
done) some inconsistencies will be introduced of the original code, the remarks
of the author(s) and the size restrictions of the contest for that year (and in
some cases it might end up being against other rules).
See [FAQ 4.3 - Why do author remarks sometimes not match the source / why are
there other inconsistencies with the original entry?](/faq.md#faq4_3) for this
specifically and also [FAQ 4.2: What was changed in an IOCCC winner source
code?](/faq.mdfaq4_2).
## Notes about changing `gets()` to `fgets()` in some entries:
Although the 'why' is discussed in the [FAQ 4.1: Why were some calls to the libc
function `gets(3)` changed to use `fgets(3)`?](/faq.md#faq4_1) we want to give
more details here as it pertains to the fixes and updates made in numerous
entries below (note that some of the information in that FAQ entry are below).
The problem with `gets()` is that in some systems a warning can be interspersed
with the output which can be confusing, to say nothing of the annoyance of it
(which can be fixed via `2>/dev/null` - and this is done with some entries in
the to use/try sections - but which makes it more burdensome to run as there are
a lot of entries that use it still).
A good example was [1990/tbr](/thanks-for-fixes.md#1990tbr-readmemd) where one
would see:
```
$ warning: this program uses gets(), which is unsafe.
# cursor here, what to do?
```
whereas without the warning it's much easier to see that it's a prompt:
```
$
```
Another great example is:
```sh
$ cd 1990/cmills
$ ./cmills
Shuffle...
warning: this program uses gets(), which is unsafe.
Total $1000. Wager?
```
In some entries this change is not possible, in one-liners it might make them
too long (though it's also been possible to do it in some cases) and in some
entries it's more complicated than others because of the annoying fact that for
'"compatibility" reasons' `fgets()` retains the newline and `gets()` does not.
As the v7 man page used to say:
```
BUGS
The fgets(3) function retains the newline while gets(3) does not, all in the
name of backward compatibility.
```
Some entries like [1992/adrian](1992/adrian/README.md) were more complicated in
other ways due to the code generating other output and because of how it works
it would generate code that could not be compiled, simply because of spaces
being added; nevertheless Cody did make this fix along with a number of other
fixes in that entry.
In any case some of the entries have been updated this way for the reasons
described above and in the [FAQ](/faq.md).
Where possible `gets(3)` has been redefined to be `fgets(3)` with the
appropriate arg. This is not always possible but if often it is.
See also [bugs.md](/bugs.md) for a further discussion on the matter.
## A note about bugs versus (mis)features:
Over time, when working on making fixes for compilers, different platforms
and other such things, the definition of a feature versus a bug has changed,
sometimes even for just specific entries, and this has happened a number of
times as well, back and forth.
The main definition of a feature that is most common is that if the judges or
the author (or authors) note that it crashes without the right number of args,
then this is, although technically a bug, considered a feature for the contest.
In general if something is documented then it is a feature and not a bug.
A counterexample is [1990/theorem](#1990theorem-readmemd) which is considered
such a beautiful program that along with a change to `fgets(3)` it had arg
checks added. There are some other examples for reasons like this, a good one
being [1998/schnitzi](#1993schnitzi-readmemd), also because it's such a
beautiful program (other fixes were made as well which is shown below also).
Both of these entries were fixed by Cody.
But there are some others that are more questionable and border on tampering
with the entry especially as some of them were documented by the author. These
happened over time where sometimes we, the judges, changed the status to
bug/(mis)-feature and when verifying the consistency, Cody fixed them as they
only took a few seconds to fix; others he changed back to feature status and
they were not fixed as the problems were documented by the author or us.
Of course it can be argued that by fixing these things it makes it more user
friendly for modern enjoyment but even so it's very often the wrong way to go
about it. If the author does not mention it then it can be considered a bug
that can be fixed.
See the [bugs.md](/bugs.md) for more information regarding this situation and
for many entries with a variety types of bugs that you can look at fixing too,
if you wish to help! You will be thanked in this file should you do so. Fixing
does not have to be just code: it can be a Makefile fix or something else
entirely, even typos (in data files: usually not good idea in code even in
comments though it happened once). An example that has happened several times is
that if the optimiser is enabled the program might crash, sometimes in one
platform and not others but other times in multiple platforms. This counts as a
fix too, which you will see below should you look at the very long list of
fixes, including the next section!
## Makefile fixes and improvements
Cody made a variety of changes in all Makefiles, sometimes to get an entry to
work, all noted below, but he also **improved them all** in at least one or two
ways.
For instance he changed the `LIBS` variable to `LDFLAGS` as that is the standard
variable. This simplifies compiling without having to modify the Makefile which
can be useful if something changes or if someone is trying to fix an entry but
forgets to change the Makefile or even if they don't want to make a change due
to a temporary test. These would of course depend on the compiler invocation but
since `LDFLAGS` is standard it is more likely to be used by default so no need
to check the Makefiles.
Sometimes there were bad characters or rules that caused the entry to fail to
compile or not work in some way.
Where useful he added some notes to the Makefiles during compilation to let one
know of certain problems or features that matter.
There were some other fixes as well including mass typo fixes in the Makefiles
(though that usually does not mean it is worth a thank you note it might be
worth noting in this case). Other times it was enabling or disabling the
optimiser to fix an entry, sometimes causing other problems that also had to be
fixed, a good example being [1986/marshall](#1986marshall-readmemd) (see the
[compilers.md](1986/marshall/compilers.md) for the amusing details and all that
had to be done to fix it).
There was a 'problem' where `${MAKE}` was `$(MAKE)`: this doesn't break anything
but it is inconsistent with the rest of the `${foo}` tools.
A lot of the fixes with the Makefiles that Cody made were done with his [sgit
tool](https://github.com/xexyl/sgit).
## Typo fixes and consistency improvements
Cody, being the IOCCC's resident corrections officer :-) (and a fine one at
that, we think :-) ), made many, many typ0 (... :-) ) fixes throughout the
README.md files, scripts, other data files, Makefiles (see above) etc.
He also updated the formatting of the README.md files (after renaming the old
files to README.md) to proper markdown.
Where possible he made the presentation of the entries much more consistent
across the entries of all the years as well as other files. This is not possible
for everything (the remarks of authors, for instance, cannot be and should not
be made consistent but adding markdown where necessary in the remarks is).
A lot of these fixes were done with his [sgit
tool](https://github.com/xexyl/sgit) as well but many were done manually too.
## [1984/anonymous](1984/anonymous/anonymous.c) ([README.md](1984/anonymous/README.md)) ## [1984/anonymous](1984/anonymous/anonymous.c) ([README.md](1984/anonymous/README.md))
@@ -341,6 +108,9 @@ History
Repo](https://github.com/dspinellis/unix-history-repo/tree/Research-Release). Repo](https://github.com/dspinellis/unix-history-repo/tree/Research-Release).
# 1985
## [1985/applin](1985/applin/applin.c) ([README.md](1985/applin/README.md])) ## [1985/applin](1985/applin/applin.c) ([README.md](1985/applin/README.md]))
Both Cody and Yusuke fixed this; Yusuke got this to not crash and Cody fixed it Both Cody and Yusuke fixed this; Yusuke got this to not crash and Cody fixed it
@@ -483,6 +253,9 @@ were actually not what they appear: the only arg that existed in `main()` was
if you remove it from `subr()` or don't even bother calling `subr()`? if you remove it from `subr()` or don't even bother calling `subr()`?
# 1986
## [1986/hague](1986/hague/hague.c) ([README.md](1986/hague/README.md])) ## [1986/hague](1986/hague/hague.c) ([README.md](1986/hague/README.md]))
Cody made this use `fgets()`. Cody made this use `fgets()`.
@@ -616,6 +389,9 @@ Some of the changes required:
# 1987
## [1987/heckbert](1987/heckbert/heckbert.c) ([README.md](1987/heckbert/README.md)) ## [1987/heckbert](1987/heckbert/heckbert.c) ([README.md](1987/heckbert/README.md))
Cody made this look more like the original entry by restoring the `#define` of Cody made this look more like the original entry by restoring the `#define` of
@@ -692,6 +468,9 @@ Cody also added to the Makefile `-include stdio.h` in the nowadays very
unlikely(?) but nevertheless suggested case that `putchar()` is not available. unlikely(?) but nevertheless suggested case that `putchar()` is not available.
# 1988
## [1988/dale](1988/dale/dale.c) ([README.md](1988/dale/README.md])) ## [1988/dale](1988/dale/dale.c) ([README.md](1988/dale/README.md]))
Cody fixed this twisted entry (as we called it :-) ) for modern compilers, Cody fixed this twisted entry (as we called it :-) ) for modern compilers,
@@ -838,6 +617,10 @@ Cody added the [try.sh](1988/westley/try.sh) script to show the magic of the
entry as seeing the code with the result at once is far more beautiful. entry as seeing the code with the result at once is far more beautiful.
# 1989
## [1989/fubar](1989/fubar/fubar.c) ([README.md](1989/fubar/README.md])) ## [1989/fubar](1989/fubar/fubar.c) ([README.md](1989/fubar/README.md]))
Cody got this to work with modern systems. The main issues were that an Cody got this to work with modern systems. The main issues were that an
@@ -1021,6 +804,9 @@ The `compile.sh` script allows one to specify the compiler with the `CC`
environmental variable; see the README.md for details. environmental variable; see the README.md for details.
# 1990
## [1990/baruch](1990/baruch/baruch.c) ([README.md](1990/baruch/README.md])) ## [1990/baruch](1990/baruch/baruch.c) ([README.md](1990/baruch/README.md]))
Cody added an [alternate version](1990/baruch/baruch.alt.c) which allows Turbo-C Cody added an [alternate version](1990/baruch/baruch.alt.c) which allows Turbo-C
@@ -1194,6 +980,9 @@ The alt code did NOT have arg checks added as it is actually a copy of the
original code. original code.
# 1991
## [1991/ant](1991/ant/ant.c) ([README.md](1991/ant/README.md])) ## [1991/ant](1991/ant/ant.c) ([README.md](1991/ant/README.md]))
Cody added [alt code](1991/ant/ant.alt.c) that will be a bit easier to use for Cody added [alt code](1991/ant/ant.alt.c) that will be a bit easier to use for
@@ -1435,6 +1224,9 @@ Cody also fixed the make clobber rule where a file was left lying about when it
should have been removed. should have been removed.
# 1992
## [1992/adrian](1992/adrian/adrian.c) ([README.md](1992/adrian/README.md])) ## [1992/adrian](1992/adrian/adrian.c) ([README.md](1992/adrian/README.md]))
Cody fixed the code so that it will try opening the file the code was compiled Cody fixed the code so that it will try opening the file the code was compiled
@@ -1684,6 +1476,9 @@ args (2). And not that we need the help or anything for this :-) but we
encourage you to try the original without two args :-) encourage you to try the original without two args :-)
# 1993
## [1993/cmills](1993/cmills/cmills.c) ([README.md](1993/cmills/README.md])) ## [1993/cmills](1993/cmills/cmills.c) ([README.md](1993/cmills/README.md]))
Yusuke suggested that with modern systems this goes too fast so he added a call Yusuke suggested that with modern systems this goes too fast so he added a call
@@ -1784,6 +1579,9 @@ NOTE: the `N1` and `N2` are provided as notes in the README.md file describing
this code. Other code is also described there. this code. Other code is also described there.
# 1994
## [1994/dodsond2](1994/dodsond2/dodsond2.c) ([README.md](1994/dodsond2/README.md)) ## [1994/dodsond2](1994/dodsond2/dodsond2.c) ([README.md](1994/dodsond2/README.md))
Cody fixed an infinite loop that could happen when you shoot an arrow and end up Cody fixed an infinite loop that could happen when you shoot an arrow and end up
@@ -1898,6 +1696,9 @@ automate the spoiler commands to make it easier to see the game in action from
start to finish. start to finish.
# 1995
## [1995/cdua](1995/cdua/cdua.c) ([README.md](1995/cdua/README.md])) ## [1995/cdua](1995/cdua/cdua.c) ([README.md](1995/cdua/README.md]))
Cody fixed this so that it would work with macOS. Once it could compile it Cody fixed this so that it would work with macOS. Once it could compile it
@@ -1960,6 +1761,9 @@ wider audience, without having to extract it. The exception is when the files
are created by the entry or the entry decrypts the text or whatever else. are created by the entry or the entry decrypts the text or whatever else.
# 1996
## [1996/august](1996/august/august.c) ([README.md](1996/august/README.md])) ## [1996/august](1996/august/august.c) ([README.md](1996/august/README.md]))
Cody fixed a segfault in this program that prevented it from working right and Cody fixed a segfault in this program that prevented it from working right and
@@ -2070,6 +1874,9 @@ Also, to fix any potential problem with displaying in GitHub the scripts
provided by the author, Cody added '.sh'. provided by the author, Cody added '.sh'.
# 1998
## [1998/banks](1998/banks/banks.c) ([README.md](1998/banks/README.md])) ## [1998/banks](1998/banks/banks.c) ([README.md](1998/banks/README.md]))
Cody set up the Makefile to have an alt build (using the same code) for those Cody set up the Makefile to have an alt build (using the same code) for those
@@ -2285,6 +2092,9 @@ Cody also added the [try.sh](1998/tomtorfs/try.sh) script to try out a few
commands that we recommended. commands that we recommended.
# 2000
## [2000/anderson](2000/anderson/anderson.c) ([README.md](2000/anderson/README.md])) ## [2000/anderson](2000/anderson/anderson.c) ([README.md](2000/anderson/README.md]))
Cody changed this entry to use `fgets(3)` instead of `gets(3)`. This involved Cody changed this entry to use `fgets(3)` instead of `gets(3)`. This involved
@@ -2422,6 +2232,9 @@ And although the scripts do `chmod +x` on the source code (see the README.md for
details) the source code is now executable by default. details) the source code is now executable by default.
# 2001
## [2001/anonymous](2001/anonymous/anonymous.c) ([README.md](2001/anonymous/README.md])) ## [2001/anonymous](2001/anonymous/anonymous.c) ([README.md](2001/anonymous/README.md]))
Cody fixed both the supplementary program and the program itself (both of which Cody fixed both the supplementary program and the program itself (both of which
@@ -2693,6 +2506,9 @@ thought would be fun. He also provided the sort and punch card versions,
described in the README.md, based on the author's remarks. described in the README.md, based on the author's remarks.
# 2004
## [2004/arachnid](2004/arachnid/arachnid.c) ([README.md](2004/arachnid/README.md])) ## [2004/arachnid](2004/arachnid/arachnid.c) ([README.md](2004/arachnid/README.md]))
Cody added an [alternate version](2004/arachnid/README.md#alternate-code) which Cody added an [alternate version](2004/arachnid/README.md#alternate-code) which
@@ -2886,6 +2702,9 @@ Cody also made it so that the `FNAME` is (for the entry file itself and
just to make it a bit easier to compile. just to make it a bit easier to compile.
# 2005
## [2005/aidan](2005/aidan/aidan.c) ([README.md](2005/aidan/README.md])) ## [2005/aidan](2005/aidan/aidan.c) ([README.md](2005/aidan/README.md]))
Cody fixed the test script, described by the author in their remarks, to refer Cody fixed the test script, described by the author in their remarks, to refer
@@ -3125,6 +2944,9 @@ if one runs it from another directory, specifying the directory, it'll not catch
it. it.
# 2006
## [2006/birken](2006/birken/birken.c) ([README.md](2006/birken/README.md])) ## [2006/birken](2006/birken/birken.c) ([README.md](2006/birken/README.md]))
Cody fixed a segfault in macOS with this entry. The problem was a missing `+1` Cody fixed a segfault in macOS with this entry. The problem was a missing `+1`
@@ -3225,6 +3047,9 @@ so some `int`s were changed to `long`s. The display problem might or might not
have been a problem in linux with the old `int`s but this is no longer known. have been a problem in linux with the old `int`s but this is no longer known.
# 2011
## [2011/goren](2011/goren/goren.c) ([README.md](2011/goren/README.md])) ## [2011/goren](2011/goren/goren.c) ([README.md](2011/goren/README.md]))
Cody fixed this for macOS. Before the fix it segfaulted. It worked fine under Cody fixed this for macOS. Before the fix it segfaulted. It worked fine under
@@ -3254,6 +3079,9 @@ the author's comments (along with looking up the function for the right header
file). To build try the alt rule of the Makefile. file). To build try the alt rule of the Makefile.
# 2012
## [2012/blakely](2012/blakely/blakely.c) ([README.md](2012/blakely/README.md)) ## [2012/blakely](2012/blakely/blakely.c) ([README.md](2012/blakely/README.md))
Cody added explicit linking of libm (`-lm`) as not all systems do this Cody added explicit linking of libm (`-lm`) as not all systems do this
@@ -3315,6 +3143,9 @@ We're not sure whether we want to thank Cody or not for this :-) and he's not
sure if he wants to be thanked either :-) but we appreciate it nonetheless. sure if he wants to be thanked either :-) but we appreciate it nonetheless.
# 2013
## [2013/birken](2013/birken/birken.c) ([README.md](2013/birken/README.md])) ## [2013/birken](2013/birken/birken.c) ([README.md](2013/birken/README.md]))
Cody changed the `return 0;` at the end of the program to be `return Cody changed the `return 0;` at the end of the program to be `return
@@ -3472,6 +3303,9 @@ Cody added explicit linking of libm (`-lm`) as not all systems do this
implicitly (linux doesn't seem to but macOS does). implicitly (linux doesn't seem to but macOS does).
# 2014
## [2014/deak](2014/deak/prog.c) ([README.md](2014/deak/README.md)) ## [2014/deak](2014/deak/prog.c) ([README.md](2014/deak/README.md))
Cody fixed the code that the author provided which would be what the program Cody fixed the code that the author provided which would be what the program
@@ -3535,6 +3369,9 @@ theoretically work for Microsoft Windows compilers (if anything works in Windows
that would break it we do not know. that would break it we do not know.
# 2015
## [2015/endoh3](2015/endoh3/prog.c) ([README.md](2015/endoh3/README.md])) ## [2015/endoh3](2015/endoh3/prog.c) ([README.md](2015/endoh3/README.md]))
Cody fixed this to compile with linux which was having a problem with duplicate Cody fixed this to compile with linux which was having a problem with duplicate
@@ -3561,6 +3398,9 @@ He also added explicit linking of libm (`-lm`) for systems that do not do this
(linux seems to not but macOS does). (linux seems to not but macOS does).
# 2018
## [2018/bellard](2018/bellard/prog.c) ([README.md](2018/bellard/README.md)) ## [2018/bellard](2018/bellard/prog.c) ([README.md](2018/bellard/README.md))
Cody added explicit linking of libm (`-lm`) for systems that do not do this Cody added explicit linking of libm (`-lm`) for systems that do not do this
@@ -3585,6 +3425,9 @@ Cody added explicit linking of libm (`-lm`) for systems that do not do this
(linux doesn't seem to but macOS does). (linux doesn't seem to but macOS does).
# 2019
## [2019/burton](2019/burton/prog.c) ([README.md](2019/burton/README.md])) ## [2019/burton](2019/burton/prog.c) ([README.md](2019/burton/README.md]))
Cody fixed the Makefile which had a bad character, a '%' instead of a '$' which Cody fixed the Makefile which had a bad character, a '%' instead of a '$' which
@@ -3648,6 +3491,9 @@ He also added the script [try.sh](2019/karns/try.sh) to showcase the entry a
bit more easily. bit more easily.
# 2020
## [2020/endoh2](2020/endoh2/prog.c) ([README.md](2020/endoh2/README.md)) ## [2020/endoh2](2020/endoh2/prog.c) ([README.md](2020/endoh2/README.md))
Cody copied the files from the spoiler.zip file that was password protected with Cody copied the files from the spoiler.zip file that was password protected with
@@ -3732,3 +3578,121 @@ the user has installed the appropriate library with
Cody added [alternate code](2020/tsoj/README.md#alternate-code) that will feel Cody added [alternate code](2020/tsoj/README.md#alternate-code) that will feel
more at home for vi users. One might still end up cursing (see the README.md more at home for vi users. One might still end up cursing (see the README.md
file) but probably a lot less :-) file) but probably a lot less :-)
# Miscellaneous thanks
## Thank you list since 2021 Jan 01
To avoid having to change numerous "_README.md_" files to add thank you notes,
we centralize them below.
The [IOCCC judges](https://www.ioccc.org/judges.html) wish to recognize the many
important contributions to the IOCCC presentation of past IOCCC winners.
We are pleased to note the many contributions, **made since 2021 Jan 01**,
on a winner by winner basis.
## Makefile fixes and improvements
Cody made a variety of changes in all Makefiles, sometimes to get an entry to
work, all noted below, but he also **improved them all** in at least one or two
ways.
For instance he changed the `LIBS` variable to `LDFLAGS` as that is the standard
variable. This simplifies compiling without having to modify the Makefile which
can be useful if something changes or if someone is trying to fix an entry but
forgets to change the Makefile or even if they don't want to make a change due
to a temporary test. These would of course depend on the compiler invocation but
since `LDFLAGS` is standard it is more likely to be used by default so no need
to check the Makefiles.
Sometimes there were bad characters or rules that caused the entry to fail to
compile or not work in some way.
Where useful he added some notes to the Makefiles during compilation to let one
know of certain problems or features that matter.
There were some other fixes as well including mass typo fixes in the Makefiles
(though that usually does not mean it is worth a thank you note it might be
worth noting in this case). Other times it was enabling or disabling the
optimiser to fix an entry, sometimes causing other problems that also had to be
fixed, a good example being [1986/marshall](#1986marshall-readmemd) (see the
[compilers.md](1986/marshall/compilers.md) for the amusing details and all that
had to be done to fix it).
There was a 'problem' where `${MAKE}` was `$(MAKE)`: this doesn't break anything
but it is inconsistent with the rest of the `${foo}` tools.
A lot of the fixes with the Makefiles that Cody made were done with his [sgit
tool](https://github.com/xexyl/sgit).
## Typo fixes and consistency improvements
Cody, being the IOCCC's resident corrections officer :-) (and a fine one at
that, we think :-) ), made many, many typ0 (... :-) ) fixes throughout the
README.md files, scripts, other data files, Makefiles (see above) etc.
He also updated the formatting of the README.md files (after renaming the old
files to README.md) to proper markdown.
Where possible he made the presentation of the entries much more consistent
across the entries of all the years as well as other files. This is not possible
for everything (the remarks of authors, for instance, cannot be and should not
be made consistent but adding markdown where necessary in the remarks is).
A lot of these fixes were done with his [sgit
tool](https://github.com/xexyl/sgit) as well but many were done manually too.
## Thank you honor roll
There are a number of people who have contributed to several thousand changes,
fixes and important improvements and one who has literally (or numerically :-) )
contributed thousands, that we wish to thank.
We call out the extensive contributions of [Cody Boone
Ferguson](https://www.ioccc.org/winners.html#Cody_Boone_Ferguson) who is
responsible for most of the improvements and fixes including many **EXTREMELY
HARD bug fixes** like
[1988/phillipps](/thanks-for-fixes.md#1988phillipps-readmemd),
[1992/vern](/thanks-for-fixes.md#1992vern-readmemd),
[2001/anonymous](/thanks-for-fixes.md#2001anonymous-readmemd),
[2004/burley](/thanks-for-fixes.md#2004burley-readmemd) and
[2005/giljade](/thanks-for-fixes.md#2005giljade-readmemd), making entries like
[1985/sicherman](/thanks-for-fixes.md#1985sicherman-readmemd) and
[1986/wall](/thanks-for-fixes.md#1986wall-readmemd) not need `-traditional-cpp`
(all **EXTREMELY HARD**), fixing entries to work with clang (some being
**EXTREMELY HARD** like
[1991/dds](/thanks-for-fixes.md#1991dds-readmemd)) or as much as possible (like
[1989/westley](/thanks-for-fixes.md#1989westley-readmemd), a true masterpiece
that is **INCREDIBLY HARD, _MUCH, MUCH MORE SO_ than any other fix!**), porting
entries to macOS (some being **EXTREMELY HARD** like
[1998/schweikh1](/thanks-for-fixes.md#1998schweikh1-readmemd)), fixing code like
[2001/herrmann2](/thanks-for-fixes.md#2001herrmann2-readmemd) to work in both
32-bit/64-bit which *can be* **EXTREMELY HARD**, providing alternate code
where useful/necessary, fixing possible/removing dead links,
typo/consistency fixes, improving **ALL _Makefiles_** and writing
[sgit](https://github.com/xexyl/sgit) that we installed locally to easily run
`sed` on files in the repo to help build the website. **THANK YOU VERY MUCH**
for your extensive efforts in helping improve the IOCCC presentation of past
IOCCC winners and fixing almost all past entries for modern systems!
[Yusuke Endoh](https://www.ioccc.org/winners.html#Yusuke_Endoh) supplied a
number of important bug fixes to a number of past IOCCC winners. Some of those
fixes were **EXTREMELY TECHNICALLY CHALLENGING** such as
[1989/robison](/thanks-for-fixes.md#1989robison-readmemd),
[1990/cmills](https://github.com/ioccc-src/temp-test-ioccc/blob/master/thanks-for-fixes.md#1990cmills-readmemd),
[1992/lush](/thanks-for-fixes.md#1992lush-readmemd) and
[2001/ctk](/thanks-for-fixes.md#2001ctk-readmemd). **THANK YOU VERY MUCH** for
your help!
A good number of the [past winners of the
IOCCC](https://www.ioccc.org/winners.html) tested, identified and helped correct
and/or improve the write-ups of fellow IOCCC winners for the year that they won.
The list of those past winners is too long to mention: nevertheless the [IOCCC
judges](https://www.ioccc.org/judges.html) **VERY MUCH APPRECIATE** those who
helped improve the presentation of their fellow IOCCC winners.