The Winners Of The 2025 Obfuscated C Code Contest

One of the most exciting challenges available to any software developer is that of writing brilliantly working code that’s so obtuse, so indecipherable, and opaque, that even its own author would struggle to grasp its inner workings after returning to it a year later. While for some this is just how they naturally write code, for others it’s part of the International Obfuscated C Coding Challenge (IOCCC), with 2025’s entrants once again showing their mettle.

The IOCCC judges entries among a range of categories, as it can be hard to otherwise quantify what is the ‘best’ entry, with ground rules limiting what the entry can entail. Generally as long as your code adheres to the C11 standard with a source size of 4,993 bytes or less and final binary size of under 2,503, is accompanied by a GNU-style Makefile and doesn’t turn a judge’s computer into a raging inferno — it should qualify.

Among the winning entries we got fun ones like ‘Most likely to shock’ by [Yusuke Endoh] which generates a Lichtenberg figure in ASCII in the terminal. There are also quite practical ones, such as the ‘Best real emulator’ winner by [Nick Craig-Wood], whose entry is a functional Game Boy emulator. Although not full-featured, it can play a range of real GB ROMs, just do not expect to get any sounds or fancy terminal-based graphics.

Automatic Tutorial Generator Is Perhaps The Best-Case For Vibe Coding

Quick question: how did you learn to code? It probably wasn’t bribing someone a year or two ahead of you in CS to finish all your homework, but that’s exactly what ‘vibe coders’ are doing — even in class. Odds are, you learned by working through exercises, following tutorials, and doing it yourself. Finding good tutorials isn’t getting any easier in the age of LLMs, and that’s where [Deven Jarvis]’s Lathe comes in: it’s a project to get an LLM to make the tutorial for you. Instead of doing the work for you, it gets the clanker to show you how to do it yourself.

Everyone’s different, so this may not apply to you, but it’s a journey/destination sort of problem. Some people just want a piece of software, and they can vibe code until the oceans dry up and will have no interest in this project. Other people take great joy in learning how to do things; [Deven] is one of those. A good tutorial is a great way to learn, since it artificially softens the learning curve compared to just jumping into a project with a man page or a datasheet.

Of course you’re still faced with the hallucination problem, something [Deven] admits in his excellent write-up. As he points out, the advantage is that you can call whatever model you plug into Lathe on its BS, and try and get a correct answer. Try that on Reddit, or most other places online. Sure, the tutorials aren’t going to match the best human-generated content, and [Deven] admits that. He’s using it for topics (like slicer design) that don’t have easy tutorials online — and sadly, his prediction that nobody is going to bother making good learning resources like they used to when they’ll just be scraped by LLMs is very likely true. It’s not that your options are vibe code or vibe-generated tutorial, but if that’s the direction the world is going, we’ll take the tutorial, thanks.

Getting the LLM to hold your hand through a tutorial might not appeal to the most Butlerian among us, but it’s a big step from that to the full cognitive surrender some people worry about.