Twenty Eighth International Obfuscated C Code Contest

Website structure and presentation

  • People note the amusing literalness of linking every entry as name/index.html instead of relying on default index serving, given the contest’s obsession with bytes.
  • Some notice a placeholder “XXX-add-show-URL-here-XXX” left on the main page and hunt for the missing livestream link.
  • The recent redesign broke many historic URLs and pushes users through JavaScript-heavy GitHub pages; text-mode/JS-averse users complain and resort to git clone.

LLMs and obfuscated code

  • Initial suspicion that “increased quantity and quality” might be due to LLMs is met with broad skepticism.
  • Several argue LLMs are tuned toward readable, conventional code and do poorly at intentional misdirection and dense tricks that IOCCC entries rely on.
  • Someone involved with the show says current LLMs largely failed to understand this year’s entries beyond superficial comments.
  • Attempts to get LLMs to either write or explain entries often produce verbose, pseudo-explanatory code that misses the real mechanisms, sometimes blocked by malware filters.
  • Idea floated: a separate competition for LLMs to deobfuscate IOCCC programs.

Discussion of specific entries

  • Enthusiasm for the MD5-based image decompression one-liner that outputs its own logo from the hash of its source; long subthread on MD5 collisions, “magic constants,” and brute-forcing via non-semantic source variations (variable names, declaration order).
  • The moon-phase ASCII program draws strong reactions; connections made to earlier IOCCC entries using the synodic month constant and to donut.c / Pi-calculator classics.
  • Other praised 2024 entries: a tiny Linux emulator that also embeds a C64 emulator; a browser-based VM running Doom via doomp.bin; a Wordle implementation whose source is shaped like the Wordle grid; the Unicode-heavy entry whose main body never runs due to cleverly abused TAG characters and putchar.
  • Many cite older favorites (e.g., stereogram/3D-image code, Pi-from-source), highlighting the tradition of programs whose source is itself an image or data.

Rules, loopholes, and culture

  • Rule 2’s oddly specific size limits (4993 bytes / 2503 “iocccsize units”) spark curiosity; people note potential data hiding in filenames via argv[0] or __FILE__.
  • Stories of teachers and coworkers using obfuscated C to teach pitfalls and style; references to “On Trusting Trust” and the Underhanded C Contest as conceptual cousins.
  • Debate over whether IOCCC is an argument against C; consensus that any language can be abused, though C’s flexibility makes extreme obfuscation unusually easy.