From 723df90fa3b750ab35fda36b42b04f437c8dd6b6 Mon Sep 17 00:00:00 2001
From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com>
Date: Thu, 2 Nov 2023 05:47:34 -0700
Subject: [PATCH] Fixes in FAQ and todo files
The FAQ has been updated to add something that was missing to the entry
about the general Makefile rules (make clobber, make all, make alt etc.)
that was in the todo. This has been removed from the todo.md as well.
Fix link in FAQ: not how-to-bugfix.md but how-to-help.md as I changed
this a while back as it isn't a matter of fixing a bug (which could be
any number of problems) but rather how to help with the website etc.
Make sure before a line starting with '#' that there are two blank lines
above it. Some already had this but many did not.
Change other things in todo.md file based on some things that have been
done (with corrections needed in some cases and otherwise the need to
verify no corrections are needed).
Typo fix in todo.md (swap a letter with a space).
I am aware that the todo.md is kind of a mess because of how it has been
updated. It would be helpful to have sections but this was meant to be a
quick update as it is more important to work on the things rather than
to organise the things that have to be done.
---
faq.md | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++------
todo.md | 56 +++++++++++++++++++++----------------------------
2 files changed, 83 insertions(+), 38 deletions(-)
diff --git a/faq.md b/faq.md
index 6d1e88852..76a76a74c 100644
--- a/faq.md
+++ b/faq.md
@@ -1,8 +1,8 @@
-
-The International Obfuscated C Code Contest
+
\
+The International Obfuscated C Code Contest \
@@ -17,23 +17,27 @@
Winning entries
Known Bugs & (Mis)features |
-How to fix an IOCCC winner |
+How to help |
Thanks for the fixes |
A bit of web site history
+
# The IOCCC FAQ
+
## Q: How many entries do you receive each year?
By tradition, we do not say.
+
## Q: How many judging rounds do you have?
Are you trying to trick us? We will not say that either.
+
## Q: What are the general Makefile rules used in order to clean and build entries for use?
In general the best way to compile everything in an entry directory is to run:
@@ -80,6 +84,13 @@ clobber` depends on `clean` so running `make clobber` will invoke `make clean`.
Are there any other rules? You tell us!
+NOTE about the above rules: the Makefile default assumes `cc` which might be a
+gcc-based compiler, or a clang-based compiler, or some other compiler. Only by
+forcing `CC=clang` or `CC=gcc` will one invoke a specific compiler to, say,
+enable or disable additional warnings or flags. Even so different versions or
+compilers might do different things, have different defects or other issues.
+
+
## Q: How come some entries have code that is incongruent with what the author(s) wrote about the entry?
It is very likely in this case that the code was fixed to work for modern
@@ -88,6 +99,7 @@ some entries you should look at the original code as in `winner.orig.c` or
`prog.orig.c`. Sometimes the original is in an alt version like `winner.alt.c`
or `prog.alt.c`.
+
## Q: Why have some entries that originally used `gets()` been modified to use `fgets()`? Doesn't this tamper with the entry too much?
A fine line indeed has to be drawn here but it was decided that it is worth it
@@ -125,6 +137,7 @@ does not. We're not sure how this is compatibility but either way it can cause a
problem and it is this that has complicated most of the fixes though again some
can look almost identical.
+
## Q: How can I easily see what was changed in order to get an entry to work in modern systems?
Although the [thanks-for-fixes.md](/thanks-for-fixes.md) file sometimes gives
@@ -210,6 +223,7 @@ make diff_alt_prog
and you'll see a single line changed and very simply.
+
### Tip: if you have `colordiff` installed it's a lot easier to see the differences
To use these rules but provide a different `diff`, for instance `colordiff`,
@@ -223,6 +237,7 @@ make DIFF=colordiff diff_alt_prog # for alt to prog diff
Obviously if you want to view the alt code or the orig code you can just open
the files as described above.
+
## Q: Sometimes the author's or authors' remarks do not match the source! Why and what can I do about it?
This is very likely to happen when an entry was fixed for modern systems. When
@@ -276,6 +291,7 @@ that works for modern systems but one can view the original code in the
Some entries should not have modern system versions replaced. See below.
+
## Q: I can't get some entries to work in 64-bit systems that don't support 32-bit!
Unfortunately some older entries are non-portable and require 32-bit support of
@@ -290,6 +306,7 @@ for 64-bit systems. Many were fixed to work with modern systems but some are
supposed to only work with 32-bit systems so any updated version of these
entries should be an alternate version.
+
## Q: Under macOS I can't compile some entries and/or they don't work right. Why?
If the entry requires gcc and you did not explicitly install gcc in macOS you
@@ -318,6 +335,7 @@ At the same time some entries are not designed to work with clang. There might
be alternate code added at some point but as above this depends on free time and
other things that have to be done plus remembering to do it.
+
## Q: What is `cb` that is mentioned in some of the older entries?
This was a C beautifier for Unix, both AT&T and Berkeley, but it seems to no
@@ -340,12 +358,14 @@ In macOS Mountain Lion and beyond to run X11 applications one needs to install
[XQuartz](https://www.xquartz.org). This will let you compile, link and run X11
applications.
+
## Q: How do I compile and run entries that use SDL1/SDL2 ?
This depends on your operating system but below are instructions for linux and
macOS with alternative methods for macOS and different package managers with
linux.
+
### Red Hat based linux
Execute one of the following as root or via sudo:
@@ -370,6 +390,7 @@ export SDL2_INCLUDE_ROOT=/usr
but this might not be necessary in more modern days especially as we use
`sdl-config` and `sdl2-config` which should find the proper paths.
+
### Debian based linux
Execute the following as root or via sudo:
@@ -403,12 +424,14 @@ feature of the package manager to determine which packages you need to install.
Note that you might have to install both the library and the developmental
packages: one for compiling and one for linking / running.
+
### macOS
If you're using macOS there are at least three ways to obtain it. You can
download it from the SDL website and install the package. That will not
work well for the IOCCC but these will:
+
#### MacPorts
If you haven't already, install
@@ -419,6 +442,7 @@ If you haven't already, install
sudo port install libsdl libsdl2
```
+
#### Homebrew
If you have not already done so, install [Homebrew](https://brew.sh).
@@ -430,13 +454,14 @@ brew install sdl2 sdl12-compat
eval "$(/opt/homebrew/bin/brew shellenv)"
```
-##### NOTE: there might be extra SDL packages required
+### NOTE: there might be extra SDL packages required
In the case that some entries do not work even with SDL1/SDL2 installed it might
be that you need additional SDL libraries. See the entry's README.md for
details. If something is not noted you're welcome to report it as an issue or
fix it and make a new pull request.
+
## Q: How do I compile and run entries that use sound in macOS?
This might depend on the entry but in some cases like
@@ -448,6 +473,7 @@ you can use either MacPorts or Homebrew. See below for instructions for each.
Usually the README.md file will explain how to use it in linux so we do not
include this here, at least for now.
+
### MacPorts
If you haven't already, install
@@ -458,6 +484,7 @@ If you haven't already, install
sudo port install sox
```
+
### Homebrew
If you have not already done so, install [Homebrew](https://brew.sh).
@@ -469,6 +496,7 @@ brew install sox
eval "$(/opt/homebrew/bin/brew shellenv)"
```
+
## Q: How did entry XYZZY win? It breaks rule 2!
As entries have been fixed it is entirely possible that some of the entries no
@@ -479,6 +507,7 @@ For the original version see the [/archive](/archive) directory where you can
find all the original winning entries. In some cases the `winner.alt.c` is the
original source code.
+
## Q: I found a bug in a previous winner, what should I do?
We do not 'maintain' the contest winners as such. The code is made available on an 'AS
@@ -498,6 +527,7 @@ More generally please see the file [how-to-bugfix.md](/how-to-bugfix.md). Note
that this file is not a tutorial on how to fix X, Y and Z problems but rather
what to do to get the fix in.
+
## Q: Do you have a list of entries with known problems and/or features that might appear to be bugs but are not?
Yes! Please see [bugs.md](/bugs.md) for a list of known bugs and/or issues of a
@@ -507,6 +537,7 @@ Note that just because an entry is not in the bugs file does not mean there is
not an issue and note that some issues are simply missing files, dead URL(s) or
something like that.
+
## Q: Are there types of entries that are submitted so frequently that the judges get tired of them?
Yes, there are types of entries that show up over and over again.
@@ -518,6 +549,7 @@ The [guidelines](guidelines.html) say:
We like variety. However too often we see (please look at the winning examples
given to be aware of the level of the competition):
+
### maze generator
- [1985/shapiro](years.html#1985_shapiro)
@@ -529,7 +561,8 @@ given to be aware of the level of the competition):
- [1998/bas1](years.html#1998_bas1)
-### tic-tac-toe game
+
+### tic-tac-toe/noughts and crosses/Xs and Os game
- [1991/westley](years.html#1991_westley)
@@ -537,6 +570,7 @@ given to be aware of the level of the competition):
- [2020/carlini](years.html#2020_carlini)
+
### solitaire/Othello game
- [1987/lievaart](years.html#1987_lievaart)
@@ -561,6 +595,7 @@ given to be aware of the level of the competition):
_As you can see, just a list of primes (let alone small primes) does not cut it
anymore._
+
### self reproducing program
- [1990/scjones](years.html#1990_scjones)
@@ -569,6 +604,7 @@ anymore._
- [2000/dhyang](years.html#2000_dhyang) - _unless you beat this one, your chances are slim_
+
### entries that just print "Hello, world!"
- [1984/anonymous](years.html#1984_anonymous)
@@ -587,6 +623,7 @@ anymore._
_**...it's so 20th century...**_
+
### entries that use some complex state machine/table to print something
- [1988/isaak](years.html#1988_isaak)
@@ -597,6 +634,7 @@ _**...it's so 20th century...**_
- [2018/giles](years.html#2018_giles)
+
### rot13
- [1985/sicherman](years.html#1985_sicherman)
@@ -607,6 +645,7 @@ _**...it's so 20th century...**_
- [1991/fine](years.html#1991_fine)
+
### **pi** or **e** computation
- [1986/august](years.html#1986_august)
@@ -617,6 +656,7 @@ _**...it's so 20th century...**_
- [1989/roemer](years.html#1989_roemer)
+
#### Hints on overused themes
HINT: It is not fatal to send in those types of entries, it is just MUCH
@@ -631,10 +671,12 @@ explain near the beginning of your remarks why you are submitting a entry based
on an 'overused theme' and why the judges should not simply toss it out as being
boring.
+
## Q: What should I write in the 'remarks' (remarks.md) section of my entry, if anything at all?
As much or as little as you wish.
+
### What helps:
- explaining what your entry does
@@ -647,6 +689,7 @@ As much or as little as you wish.
- how it works (if you are really condescending)
+
### What does not help:
- admitting that your entry is not very obfuscated (you see, the contest is
@@ -695,18 +738,21 @@ which you should update and submit, using the instructions above if necessary.
There are none. There was no IOCCC in those years.
+
## Q: What are the .orig.c files in the directories in winning entries ?
Due to the fact that the original code has sometimes had to change these files
are the original winning entry or as close to as possible to the original that
we can find.
+
## Q: Why don't you publish non-winners?
Because the publication on the IOCCC site **_IS_**
the award! Anyone is free to put their IOCCC hopefuls, lookalikes and/or
non-winners on their web page for everyone to see.
+
## Q: How much time does it take to judge the contest?
It takes a fair amount of time to setup, run, answer email, process entries,
@@ -734,15 +780,18 @@ If it can compile and run on Windows and/or Mac (see
even better. Being able to compile with other compilers like clang is also a
good thing.
+
## Q: I would like to mirror the IOCCC web site. May I do so?
We are not accepting mirror requests at this time, sorry.
+
## Q: I want to publish some parts of the IOCCC in an article, or book, or newsletter, or use then in class/instructional notes, or quote from the IOCCC. May I do so?
Please ask the [IOCCC judges](/judges.html) first. Please send your request using the
instructions on the [contacting the IOCCC Judges](/contact.html) page.
+
## Q: What are the grand prize / Best of Show winners?
In 1984-1987, the grand prize winners are:
@@ -790,6 +839,7 @@ from the judges, they used the following awards:
These could be considered the 'best entry' for those years with 1 or
more other entries that came in close behind.
+
## Q: I managed to get entry XYZZY from year 19xx to compile; now it fails to run!
switch(19xx/XYZZY) {
@@ -834,6 +884,7 @@ compilers.
}
+
## Q: How did the IOCCC get started?
One day (23 March 1984 to be exact), Larry Bassel and I (Landon Curt
@@ -922,11 +973,12 @@ for more details.
 |
© Copyright 1984-2020,
[Leo Broukhis, Landon Curt Noll](/judges.html)
-- All rights reserved
+- All rights reserved\
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. |
|
+
## Q: Why do you sometimes use the first person plural?
As a precedent for [first person
@@ -963,6 +1015,7 @@ p.s. Here is an image of F. D. C. Willard:
[F D C Willard](png/F.D.C.Willard.png)
+
## Q: Why do Makefiles use `-Weverything` with `clang`? Don't you know that its use is not recommended by clang developers?
The use of `-Weverything` is limited to when one forces `CC=clang`. Users with
diff --git a/todo.md b/todo.md
index be527fe37..3cd14666d 100644
--- a/todo.md
+++ b/todo.md
@@ -1,5 +1,5 @@
# A todo list of known things to check and/or do
-*Last updated: Sat 21 Oct 2023 11:04:58 UTC*
+*Last updated: Thu 02 Nov 2023 12:32:15 UTC*
This document is primarily for [Cody Boone
Ferguson](/winners.html#Cody_Boone_Ferguson) as he (that is I :-) ) wanted a way
@@ -38,18 +38,9 @@ years through 2013 and up through 2014/endoh1 have been checked. As for the
things have to be done in those years. These things, such as dealing with old
email addresses and such, can likely be done with the typo pass (see below).
-- *AFTER* the README.md files have been format fixed: check for typos in
-README.md files. Although I did up through I believe 2011 I have to do another
-pass through all except that as of 12 July 2023 I went through 1984 and 1985. At
-the same time the formatting has to be / is being checked.
- * UPDATE on 06 July 2023: some while back I noticed that _ALL_ years will
- have to be checked again but most of the years checked through 2011 (I think
- it is but I have this vague memory I did a couple more years - that will be
- checked when I return to this item) can be checked more quickly.
- * UPDATE on 06 July 2023: see below list under the item _Verify which
- README.md files have not been checked for correct formatting_ as well.
- * UPDATE on 06 July 2023: note that this does NOT include the
- `YYYY/README.md` files! See the below item for that.
+- Typo fix ALL markdown files. For the README.md files years 1984-1989 have been
+done (along with the format fixes) except that YYYY/README.md files have not
+been completed. See below item for details on that.
- Go through all year README.md files: that is 1984/README.md, 1985/README.md and
so on. As of **Mon 16 Oct 11:22:52 UTC 2023** the following years have had a
@@ -59,12 +50,15 @@ determined if this will be done with the typo pass (what should be the final
pass) or not but it's very possible that it can be just to speed things along.
- Verify which README.md files have not been checked for correct formatting and
-fix any issues.
+fix any issues found.
* This includes author information: not only at first column but making sure
- that the lines end with `
` so that the rendered output does not end up
+ that the lines end with `\` so that the rendered output does not end up
on one line only. Note that earlier spaces were being added to the end of
the line but after discussion on GitHub it was decided it is preferable to
- have `
` instead.
+ have `\` instead.
+ NOTE that this has been done already BUT it was not done manually so
+ there are some lines that should not end in `\` including some in code
+ blocks.
* [Cody Boone
Ferguson](https://www.ioccc.org/winners.html#Cody_Boone_Ferguson) has done
many and has some kind of record of what he's done but these can be added
@@ -73,15 +67,18 @@ fix any issues.
except that the years not checked / fixed should only need one pass (but
probably will have a second pass anyway just to make sure things are good as
seeing things a second time is a good way to find additional errors).
+ * NOTE that as of some days ago (today being 02 November 2023) the years
+ 1984-1989 have been checked for formatting and other issues including typos.
+ Whether a quick final pass will be made is not determined yet.
-- Remove addresses from older winning entries but (if known) keep country code +
-add country code and name to the respective JSON file in the [author](/author)
-subdirectory. As of half past 4 Pacific time on 22 April 2023 only the years
-through 1986 have been done entirely. This should not take much time but I
-(Cody) am bored with it for now and would rather do other more important things.
-This will likely not be updated until after it's done (and when I remember to
-remove it - I expect that when I go for it I'll do it in one sitting or maybe a
-few sittings with a few brief breaks).
+- Remove addresses from older winning entries but (if known) keep country code
+and if known add it and the name to the respective JSON file in the
+[author](/author) subdirectory. As of half past 4 Pacific time on 22 April 2023
+only the years through 1986 have been done entirely. This should not take much
+time but I (Cody) am bored with it for now and would rather do other more
+important things. This will likely not be updated until after it's done (and
+when I remember to remove it - I expect that when I go for it I'll do it in one
+sitting or maybe a few sittings with a few brief breaks).
- NOTE: do this AFTER everything else is done! Verify that
[2004/gavin](2004/gavin/)'s [img/fs.tar](2004/gavin/img/fs.tar) contains the
@@ -137,18 +134,13 @@ entries in the respective README.md files. This cannot be done without examining
each because some names are mentioned by the author. For instance I (Cody) can
think of at least three where I have been mentioned explicitly by the author:
one in 2018, one in 2019 and one in 2020.
+ * NOTE: this _appears_ to be done as of some time back from this writing (02
+ November 2023). This is being verified as each README.md file is checked.
- For the YYYY/README.md files where it refers to emailing the judges fixes
instead change it to make pull requests. See the
[1995/README.md](1995/README.md) file for example.
- Check the YYYY/README.md files for other things besides the GitHub pull
-requests rather thane mailing judges. This can be done on the final pass of the
+requests rather than emailing judges. This can be done on the final pass of the
files.
-
-- When adding to the FAQ about `make` rules `make sure` :-) that this text is
-added:
-> The Makefile default assumes `cc` which might be a gcc-based compiler, or a
- clang-based compiler, or some other compiler. Only by forcing `CC=clang` or
- `CC=gcc` will one invoke a specific compiler. Even so different versions or
- compilers might do different things, have different defects or other issues.