Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

IOCCC Winners Announced

Posted by Hemos on Mon Aug 30, 2004 08:35 AM
from the begin-the-headache dept.
Arachn1d writes "The IOCCC has finally announced the winners of the 2004 contest.
With winners this year including a mini-OS and a ray-tracer, the submissions should be interesting indeed - if you can make sense of them. According to the page, the actual code for the winners should be up mid-october."
+ -
story
This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • Obfuscation (Score:5, Informative)

    by BoldAC (735721) on Monday August 30 2004, @08:37AM (#10108237)
    For those who don't know what this is all about...

    It's all about how to obfuscate [demon.nl] baby!

  • Umm (Score:3, Interesting)

    by stratjakt (596332) on Monday August 30 2004, @08:37AM (#10108239) Journal
    Who's the IOCCC and what was this contest about? Some programming thing obviously. Is this that obfuscated perl thing?

    Seriously, a sentence or two of information in the submissions doesn't hurt.
    • Re:Umm (Score:5, Funny)

      by TheShadowHawk (789754) on Monday August 30 2004, @08:39AM (#10108261) Homepage

      Maybe that's the whole point. Everything (including the article) is well... obfuscated.

    • Re:Umm (Score:5, Funny)

      by ophix (680455) on Monday August 30 2004, @08:44AM (#10108299) Homepage
      wouldnt it need to be an UNobfuscated perl code contest? ;}
    • by GillBates0 (664202) on Monday August 30 2004, @08:48AM (#10108317) Homepage Journal
      Every self respecting geek knows what the IOCCC is. By admitting that you don't, you've demonstrated your inability to cope with the rigorous demands of abiding by the high standards of geekiness.

      Please hand in your Geek membership card on your way out. Thank you.

        • Not only that, I don't consider the ability to churn out unreadable code a good trait in a programmer

          To be able to make something like that, you need to be able to understand the language well, which is a good thing.
              • by stratjakt (596332) on Monday August 30 2004, @09:32AM (#10108597) Journal
                Here's an example of what I'm talking about:

                I got a resume from some kid just out of University. He attached some samples of the code he wrote. One of them was the perennial "calendar" app that I think we all were tasked to write.

                Anyhow, I was perusing the code. It was pretty sloppy, one-letter variable names, multiple statements crammed together on single lines.

                So I get to this one section of code. I can't even remember how it worked now, but it was this convoluded for() statement that flipped a flag and did some weird ass computation. It took me about 10 minutes of "stepping through" it in my head to figure out what it was doing.

                It was calculating leap-years. I actually stared at it in shock, imagining how much time and energy this kid spent figuring out the worlds most assinine way to figure out if it's leapyear. I would have just wrote "if (year%4 == 0) { days_in_feb=29; }" or something of the sort. I wouldnt write "if (!(year%4)) {};" because perfoming boolean tests on integers is another pet peeve, it doesn't improve the code, just detracts slightly from its readability.

                I actually interviewed the kid, and pointed the lines out to him. I asked him why he didn't just use the modulus operator. He just stared at me blankly. He had no clue what "modulus" meant.

                As creative as his "solution" was, his code was bad, and he was a shitty programmer with a very very poor understanding of the language.

                It's all cool to have this contest, and if that's how people want to spend their spare time, go ahead. I'm just trying to send a message to the newbies reading slashdot who are still in school and tend to think this is a hallmark of a good coder in the "real world". In the real world or business, anything that makes your day more of a hassle than it needs to be, is a bad thing.

                Leave the obfuscation to the marketing department. We have one who actually listed double-ROT13 encryption as a "feature" of our product. Ok, he asked me what encryption we supported by default, and I told him double-ROT13 not realizing just how dense he was. The story gets better! The marketing shpiel he put together was going to the IT security folks at the NSA! One of them called me up, in tears from laughing. He asked if I could implement quad-ROT13. I told him I could implement 2^n-ROT13, iff n>0.

                But that's another story for another article.
                • by ComaVN (325750) on Monday August 30 2004, @09:54AM (#10108732)
                  Leave the obfuscation to the marketing department. We have one who actually listed double-ROT13 encryption as a "feature" of our product. Ok, he asked me what encryption we supported by default, and I told him double-ROT13 not realizing just how dense he was. The story gets better! The marketing shpiel he put together was going to the IT security folks at the NSA! One of them called me up, in tears from laughing. He asked if I could implement quad-ROT13. I told him I could implement 2^n-ROT13, iff n>0.

                  Actually, I think you're the one who's dense, when you think someone from marketing who asks you a straightforward question about your product is supposed to understand a geek-joke.

                  It's not his job to check or even understand all the technical info. It's (presumably) yours.
                • It was calculating leap-years. I actually stared at it in shock, imagining how much time and energy this kid spent figuring out the worlds most assinine way to figure out if it's leapyear. I would have just wrote "if (year%4 == 0) { days_in_feb=29; }" or something of the sort.

                  determining a leap year [wikipedia.org] is more than just having it be divisible evenly by 4: The Gregorian calendar adds an extra day to February, making it 29 days long, in years divisible by 4, excepting years divisible by 100, but including year
        • by Emil Brink (69213) on Monday August 30 2004, @08:59AM (#10108404) Homepage
          Whoa there, turn up the humour and creativity-appreciation knobs a couple of notches please. I don't think anyone likes to see obfuscated code in production environments, but if you haven't read any IOCCC entries, you should. They can be real eye-openers when it comes to realizing what you can do with the C language (and preprocessor) when put in the right hands. Plus, it's just plain fun! :)
        • by Anonymous Coward on Monday August 30 2004, @09:00AM (#10108408)
          As I understand it, this contest is basically "who can turn out the shittiest code that still runs?"

          (1) It's for fun.
          (2) It's a famous tradition.
          (3) There is a great elegance in the entries which win; they are far from shitty.
          (4) Chill out.
        • by UserGoogol (623581) on Monday August 30 2004, @09:41AM (#10108652)
          The IOCCC is a sort of piece of classic Hacker culture. That is to say, doing something difficult and mildly amusing just because you can. Also, to make fun of C for having such a ridiculous syntax as compared to sensible languages like Lisp. (Although by this day and age we've all grown up and seen Perl, so we don't care about that as much.)

          Anyway, this is not merely "bad code," in the sense that an idiot might program this stuff. This is the sort of code you can only attain when you actively aim for it. You really need to know the language well to know how to fuck with it so thoroughly.
        • by Bastian (66383) on Monday August 30 2004, @09:45AM (#10108675)
          Depending on where I'm applying, I would put winning the IOCCC on my resume. If you are looking at an employer who would know what it is, it shows that you have more knowledge of how computers and (at least) the C programming language work than most people. It doesn't show that you always turn out crappy code - those in the know also know that the IOCCC got its start with a bunch of skilled programmers ridiculing people who turn out crappy code.

          If they don't know, hey, it says you won a fairly well-known programming contenst.
  • Windows CE? (Score:5, Funny)

    by wackysootroom (243310) on Monday August 30 2004, @08:38AM (#10108242)
    Was the Mini-Os Windows CE by any chance? I'd bet that's pretty obfuscated!
  • by dtfinch (661405) * on Monday August 30 2004, @08:39AM (#10108259) Journal
    When there was no contest at all. "Yeah, everyone send in your entries. Oh, nevermind, maybe next year."

    Of course it looks like those extra 2 years paid off. This year's winners look very interesting.
  • by Omega1045 (584264) on Monday August 30 2004, @08:40AM (#10108268)
    If the IOCCC is anything like the IOC, I am sure they will ask some of the winners to give back their prizes because of judging mistakes, and probably screwed over several Russian participants.
  • by GillBates0 (664202) on Monday August 30 2004, @08:41AM (#10108272) Homepage Journal
    10333 r0x0rzz. 0bf534710n rul3zz!

    C0N6R47UL4710N5 W1NN3RZZ!

  • by pedestrian crossing (802349) on Monday August 30 2004, @08:41AM (#10108275) Homepage Journal
    Since the summary isn't very informative, and the servers are rapidly slowing down, it is the International Obsfucated C Code Contest. About all that is (was?) on their page is the list of winners...
  • Additional Mirror (Score:5, Informative)

    by pikine (771084) on Monday August 30 2004, @08:42AM (#10108287) Journal
    us1 mirror [ioccc.org] and see Google cache [216.239.41.104] for more.
  • Site content (Score:5, Informative)

    by houghi (78078) on Monday August 30 2004, @08:44AM (#10108296) Homepage
    Not much. No source code yet. Here is the content of the site:

    Here are the names and categories for the winners of the 17th IOCCC. The source code has not been released yet. The winners have been notified by EMail. They will be given a chance to review the write-up of their entry. Once this process is complete the source code will be made available on the winning entries web page. We anticipate that this will be in mid-October.

    The winners are,

    * Best of Show

    Gavin Barraclough - Mini-OS
    Manchester, UK

    screenshot

    * Best One-Liner

    Eryk Kopczynski - OCR of 8, 9, 10 and 11
    Warszawa, Poland

    * Best Utility

    Don Yang - A CRC inserter
    Covina, California, USA

    * Best Non-Use of Curses

    Mark Schnitzius - Editor animation
    Singapore

    * Best X11 Game

    Daniel Vik - X Windows car racing game
    La Jolla, California, USA

    screenshot

    * Best use of "Precious" Lines

    Anonymous - Rendering of a stroked font
    Singapore

    screenshot

    * Best Abuse of CPP

    Daniel Vik - Calculates prime numbers using only CPP
    La Jolla, California, USA

    * Best Calculated Risk

    Brent Burley - A Poker game
    Burbank, California, USA

    * Best use of Vision

    Nick Johnson - Curses maze displayer/navigator with only line-of-sight visibility
    Christchurch, New Zealand

    * Best Font Engine

    Jeff Newbern - Renders arbitary bitmapped fonts
    Springwood, Queensland, Australia

    * Most Functional Output

    Jonathan Hoyle - Curses based polynomial graphing with auto-scale
    Ann Arbor, Michigan, USA

    * Best use of Light and Spheres

    Anders Gavare - A ray tracer
    Gothenburg, Sweden

    screenshot

    * Best Abuse of Indentation

    Stephen Sykes - Space/tab/linefeed steganography
    Helsinki, Finland

    * Best Abuse of the Guidelines

    Anthony Howe - A CGI capable HTTP server
    Cannes, France

    * Best Abuse of the Periodic Table

    John Dalbec - Conway's look'n'say sequence split into elements
    Canfield, Ohio, USA
  • Mirrors (Score:5, Informative)

    by lachlan76 (770870) <(ten.no.edonretni) (ta) (nnug.nalhcal)> on Monday August 30 2004, @08:46AM (#10108311)
    Before it all goes down, here are the mirrors:

    Asia
    * http://www.tw.ioccc.org/ [ioccc.org] - Hsin-Chu, Taiwan (24 48' N 120 59' E)

    * Australia and other Pacific http://www.au.ioccc.org/ [ioccc.org] - Sydney, Australia (34 0' S 151 0' E)

    Europe
    * http://www.de.ioccc.org/ [ioccc.org] - Hamburg, Germany (53 33' N 10 2' E)
    * http://www.es.ioccc.org/ [ioccc.org] - Madrid, Spain (40 25' N 3 41' W)
    * http://www.gr.ioccc.org/ [ioccc.org] - Athens, Greece (38 00' N 23 44' E)
    * North America www0.us.ioccc.org [slashdot.org] - Sunnyvale California, US (37 22' N 122 02' W)
    * www1.us.ioccc.org [slashdot.org] - Saint Paul, Minnesota US (44 57' N 93 06' W)
  • by Anonymous Coward on Monday August 30 2004, @08:48AM (#10108320)
    I always though this contest was funny, but in a dark and sinister way. I can't tell you how many times I've looked at someone else's code and spent hours trying to figure it out. In the real world, it's not funny.
    I'm amazed at how someone can acheive such obfuscated code without really trying.
    • I'm amazed at how someone can acheive such obfuscated code without really trying.

      I'm not amazed at all - I pay special attention to my code so that someone else could come in and use it. That doesn't mean they'll be able to just step in and understand everything, it'll be hard no matter what. But if I didn't try, I think everything I made would be unusable by anyone else. In my mind that makes the code worth very little - it is the ability to reuse code that makes it valuable. I've debugged or added f
    • by wiredog (43288)
      Comment seen in someone else's code just before a block of especially hairy code which, it turned out, used pow() to determine which bits were set in a 16 bit int which was used to hold flags used to determine if certain data was being used. It looked sort of like:

      while(pow(something,16)==n)
      {
      if(something)
      {
      for(something else)
      {
      ...

      This was on an embedded system where using one 16 bit int instead of 16 8-bit chars to hold the flags resulted in a vital savings of memory.

    • missing the point (Score:3, Insightful)

      by Speare (84249)

      Anyone can write unreadable code.

      It takes an artist to write code that is both unreadable and beautiful at the same time.

      If your entry isn't beautiful, you're just a bad programmer.

      • by Anonymous Coward
        Somebody mod this prick down, he's in desperate need of a sense of humour.

        The whole point of the IOCCC is to demonstrate how ridiculously unreadable C programs can get if you really try. And if you don't think writing a raytracer or whatever within the guidelines set in the competition rules is worthy of admiration then you've never picked up a C compiler in your life.

        I see you have a job that requires you to read CVs and presumably hire people. Please tell us which company this is so we can avoid this mi
          • by dubious9 (580994) on Monday August 30 2004, @11:01AM (#10109291) Journal
            I'd be more impressed with people who can prove they have the discipline to avoid obfuscations.

            Have you ever read any of the code? Besides formatting, (you can run stuff through indent), this stuff is *very careful* obfuscation. It's not just nonsensical variable names and lack of comments. It's using constructs in novel ways, and comming up with non-trivial solutions to what are quite often complex problems.

            If you can win this contest you know exactly what makes programs hard to read, and thereby in real situations, avoid them. Furthermore, some of the stuff is beautifully arranged and may be faster or more elegant than the easy to read version. It's not a mockery of the language, it's "art in c", and I would happily hire any of the winners as most probably they are masters of the nuances of c.
      • People do this for fun. This has nothing to do with productivity, the bottom line, or actualizing organizational synergy.
      • by groomed (202061) on Monday August 30 2004, @09:41AM (#10108650)
        Yes, I suppose, but what does any of that have to do with the IOCCC?

        It's just a competition, and like most competitions, the results are fairly pointless outside the intended domain.

        Reading your rant is like watching a spectator in the Tour de France yell "learn how to drive a car you idiot!" at Lance Armstrong.
      • by Urkki (668283) on Monday August 30 2004, @09:43AM (#10108660)
        • With recursion you get 20 function calls with all their associated overhead. A for loop is a much better solution.

        Except a properly written recursive function, and a loop end up being exactly the same thing once compiled... Even with a C compiler

        Of course anybody putting purposefully obfuscated code into any real software should be shot... All the unpurposefully obfuscated bad code is bad enough, when maintaining it falls on you.

        • You know the shit I'm talking about, jamming all kinds of operations into a for() declaration, badly chosen one-letter variable names, etc..

        That's not the point IMHO, though admittedly a lot of the stuff is just that without any real content. But the real pearls would still be devious to decipher even if all identifier names were clear, and any unnecessary structural obfuscations were written in more clear way.

        • Those suckers never even got their foot in the door. I don't care how smart they think they are, we have to get products out fast, and realistically be able to maintain/upgrade them 10+ years or so.

        You need to lighten up. Some get their kicks from polisihing their car over and over, some get theirs from standing in a river in long ridiculous boots and waving a rod around, and some get it from twisting their brains around a piece of C mumbo jumbo... Nothing wrong with any of that.
        • Except a properly written recursive function, and a loop end up being exactly the same thing once compiled... Even with a C compiler

          The C standard doesn't guarantee optimization tail-recursion; and while gcc does it (to a limited extent), many compilers do not.

          Additionally, it's sometimes important to compile your code without any optimization during debugging.

          Relying on tail recursion is really only possible in languages where the standard guarantees support.

      • by RichardX (457979) on Monday August 30 2004, @10:04AM (#10108828) Homepage
        Just a guess.. but you don't happen to have pointy hair?
      • by arcanumas (646807) on Monday August 30 2004, @10:26AM (#10109007) Homepage
        Yeah, i'm sure the guy who wrote this entry is a newbie... :)
        short main[] = {
        277, 04735, -4129, 25, 0, 477, 1019, 0xbef, 0, 12800,
        -113, 21119, 0x52d7, -1006, -7151, 0, 0x4bc, 020004,
        14880, 10541, 2056, 04010, 4548, 3044, -6716, 0x9,
        4407, 6, 5568, 1, -30460, 0, 0x9, 5570, 512, -30419,
        0x7e82, 0760, 6, 0, 4, 02400, 15, 0, 4, 1280, 4, 0,
        4, 0, 0, 0, 0x8, 0, 4, 0, ',', 0, 12, 0, 4, 0, '#',
        0, 020, 0, 4, 0, 30, 0, 026, 0, 0x6176, 120, 25712,
        'p', 072163, 'r', 29303, 29801, 'e'
        };

        Oh, here [ioccc.org] is the explanation.

      • Those suckers never even got their foot in the door. I don't care how smart they think they are, we have to get products out fast, and realistically be able to maintain/upgrade them 10+ years or so.

        At a couple of the companies I've been with we'd have after-hours informal little "Who can optimize this code the most" contests and they were amazingly instructive. They force you to think about solutions in new and creative ways, and to really understand an algorithm or CPU at a far deeper level than a simple straightforward implementation.

        And while those obscenely optimized implementations may never get near the shipping product, you always walk away with a far far better grasp of how the shipping code really does work. (And yes, we've discovered bugs by inspection... because the little optimization contest had us questioning assumptions that the shipping code relied upon)
        • by RPoet (20693)
          Tail call elimination only reduces the amount of stack frames needed. Most of the overhead associated with function calls are still there. That said, recursion is a lot more natural in some types of languages, especially functional ones. And regardless of language, recursion can be much more intuitive and maintainable than imperative loops. Overhead isn't everything.
  • Transcript (Score:5, Funny)

    by k4_pacific (736911) <k4_pacific&yahoo,com> on Monday August 30 2004, @08:50AM (#10108331) Homepage Journal
    Here's an excerpt from the award ceremony:

    winner: I won! I won!
    MC: No, you're failing computer science.
    winner: [Segmentation fault]
  • by TheShadowHawk (789754) on Monday August 30 2004, @09:08AM (#10108458) Homepage

    Since the Olympics have just finished and still reasonably fresh on my mind, did anyone else read that as a stuttered IOC-C-C? (International Olympic C-C-Committee)

    No? J-J-Just me then?

  • by pr0nbot (313417) on Monday August 30 2004, @09:09AM (#10108466)
    Chucklesome bumper sticker mentioned by someone on Slashdot...

    "Eschew Obfuscation"
  • by justkarl (775856) on Monday August 30 2004, @09:12AM (#10108485) Homepage
    And the Lifetime Acheivement in Server Destruction Award goes to...Slashdot!!! Congratulations!

    Seriously, I can practically smell the server melting from here.
  • by kkovach (267551) on Monday August 30 2004, @09:17AM (#10108516)
    obfuscated their webserver. :-)

    - Kevin
  • by jtnishi (610495) on Monday August 30 2004, @09:48AM (#10108691) Homepage
    For at least one of the entries (Don Yang's, who won the Best Utility category), the code is already up on the internet:

    http://uguu.org/src_rinia_c.html [uguu.org]

    The only reason I can even remember where this entry would be is because he's the one a few years ago that won with that strange Saitou-Aku-Soku-Zan combination program. Yeah, I could find utilities to do what his code can do on many other places, but what better way to show your anime fandom & code fanaticism by running something like this instead. ^_^

  • by KoolDude (614134) on Monday August 30 2004, @09:48AM (#10108695)

    All prize money for the latest IOCCC have been used up for bandwidth after a %^&*@#@%#^% ( obfuscated ) slashdot effect hit the site soon after results were published. We are sorry for the winners...
  • IOCCC mirrors needed (Score:5, Informative)

    by chongo (113839) * on Monday August 30 2004, @01:48PM (#10110914) Homepage Journal
    When we release the IOCCC winners, we are going to need more mirrors. If you want to mirror the IOCCC, please send EMail to Simon Cooper at:

    mirror-request at ioccc dot org

    Please include the following words in the subject of your EMail message:

    IOCCC 2004

    We will ask you a few questions and provide you with information on how we would prefer you to mirror the site. Please don't start mirroring until we have responded and processed your mirror request. Thanks in advance for your willingness to help.