IOCCC Winners Announced
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."
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."
For those who don't know what this is all about...
It's all about how to obfuscate baby!
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.
I don't need no instructions to know how to rock!!!!
Was the Mini-Os Windows CE by any chance? I'd bet that's pretty obfuscated!
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.
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.
Great ideas often receive violent opposition from mediocre minds. - Albert Einstein
C0N6R47UL4710N5 W1NN3RZZ!
An Indian-American Hindu committed to non-violent thought/speech/action alarmed by the global explosion of radical Islam
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...
A house divided against itself cannot stand.
us1 mirror and see Google cache for more.
I once had a signature.
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
Don't fight for your country, if your country does not fight for you.
Before it all goes down, here are the mirrors:
Asia
* http://www.tw.ioccc.org/ - Hsin-Chu, Taiwan (24 48' N 120 59' E)
* Australia and other Pacific http://www.au.ioccc.org/ - Sydney, Australia (34 0' S 151 0' E)
Europe
* http://www.de.ioccc.org/ - Hamburg, Germany (53 33' N 10 2' E)
* http://www.es.ioccc.org/ - Madrid, Spain (40 25' N 3 41' W)
* http://www.gr.ioccc.org/ - Athens, Greece (38 00' N 23 44' E)
* North America www0.us.ioccc.org - Sunnyvale California, US (37 22' N 122 02' W)
* www1.us.ioccc.org - Saint Paul, Minnesota US (44 57' N 93 06' W)
Please hand in your Geek membership card on your way out. Thank you.
An Indian-American Hindu committed to non-violent thought/speech/action alarmed by the global explosion of radical Islam
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.
Here's an excerpt from the award ceremony:
winner: I won! I won!
MC: No, you're failing computer science.
winner: [Segmentation fault]
Unknown host pong.
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?
Friends don't let Friends use Internet Explorer.
Chucklesome bumper sticker mentioned by someone on Slashdot...
"Eschew Obfuscation"
For all you p2p users out there:
http://www.ioccc.org.nyud.net:8090/
And the Lifetime Acheivement in Server Destruction Award goes to...Slashdot!!! Congratulations!
Seriously, I can practically smell the server melting from here.
obfuscated their webserver. :-)
- Kevin
The less confident you are, the more serious you have to act.
Is it you??
The IT section color scheme sucks.
Recursive calls to main(), if handled with interesting tricks like vectored execution and such, can really spice up a program.
If you use the trick of storing all of your data in one huge 'array', try to overlap anything you can get away with overlapping. For example, if you have a constant whose most significant byte is the same as the least significant byte in a string, there's not sense in storing that byte twice.
While not allowed in IOCCC itself, try mixing your C with a language that's even more incomprehensible than C. I had good luck with writing a C program that sent PostScript code to a printer and having all the real work be done in the PostScript code.
And here I thought the original raytracing algorithms were already pretty heavily obfuscated on their own, hence their rapid adoption throughout the industry.
http://uguu.org/src_rinia_c.html
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. ^_^
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...
getSexySig();
Speed. How many programming-language benchmarks are there that don't find C to produce the fastest code, not counting assembly/machine code? For example, interpreted languagues like LISP are completely impractical for something like a raytracer, unless someone makes a miraculously good LISP compiler.
Also, C is something of a standard language. At least on UNIX-style systems, programs written in any other language have to use some glue-code library to allow them to use standard libraries, system calls, etc. (C++ is close enough to C not to, but I've had a few frustrations with C++ symbols being named differently from C symbols.)
Anyway, any language that allows you to do everything that C does also allows you to make the same mistakes. Yes, it's probably easier to make them in C than, say... *ducks* Pascal, but it's not an insurmountable problem.
To be honest, I've never written a C program that required any security, but I hope this helps anyway.
Each language has its purpose, however humble. -- The Tao of Programming
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.
Best Slashdot Co
if (year mod 4) = 0
then
days_in_feb
endif
or something like that, it has been 20+ years since I last wrote Pascal, I'm not so familiar with the syntax anymore. Or try COBOL for the true detailed syntax you seem to adore. But one of the many advantages of C that make it so great is the concise syntax. After reading a few millions of lines of code, one gets tired from so much redundancy. If you really have experience with C, things like treating integers as boolean have become second nature.
I suggest that you trust your programmers more. The fact that you have problems understanding C code means that you should concentrate on management, rather than trying to micro-manage programmers.
I recall reading an article about how Gates and Allen developed the first Microsoft BASIC, and that they had to use one of those tricks to get it into the required space.
So, for example, if the most significant byte of a single command was shared with the least significant byte of another.. they could jump into the middle of another instruction. Crazy.
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.
[
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)
--Rob
year modulo 4 fails ... there are quite some exceptions to this simple rool. Not caring for them makes programms fail very seldom, and give QC a hart time.
in Python it is as simple as
import calendar
if calendar.isleap(year):
Slightly offtopic, but this will serve the needs of those of us reading this thread for a fix of C-related humour. The Infrequently asked questions in C (C-IAQ)
Jean-Louis Gassee beat to you that 11 years ago...
But if you're still concerned about speed, you can always go with something like OCaml which is just a shade behind C in speed, yet offers you true type saefty, expressiveness, and flexibility all in one package.
There's been a lot of work done in programming languages over the years, and there are a lot of good languages out there to work with, despite what a glance at the sorely lacking O'Reilly catalog might say...
-30-
Mirrors:
http://www.es.ioccc.org/whowon.html
http://www.tw.ioccc.org/whowon.html
http://www.gr.ioccc.org/whowon.html
http://www1.us.ioccc.org/whowon.html
http://www.au.ioccc.org/whowon.html
One of the craziest hacks I've heard of was in an article by this guy who was hired to make some changes to an early calculator design. The calculator used a spinning magnetic drum for storage, a head that could read and write at the same time, and a buffer. It seems the original designer had extended the working memory of the machine by reading the 'OS' into the buffer while the head wrote data. The calculation would then have to finish in one revolution of the drum so the head could write it back in time for the execute loop to read it. This was all written in assembly with zero documentaion. It's generally considered a Bad Idea to store your boot RAM in a serial buffer.
"A language that doesn't affect the way you think about programming, is not worth knowing" - Alan Perlis
Lisp isn't generally an interpreted language. Of the major free Lisps, CMUCL and SBCL are compiled and CLISP compiles to byte code. All of the major commercial implementations compile as well.
Generally Lisp compilers can produce code that runs in the same ballpark, timewise, as C. Here's a perfectly good 3D app written in Lisp: Mirai.
Personally it's a lot more important to me to be able to write software quickly, with as few bugs as possible, and with pretty good performance. But of course with Lisp once you've written your code you can still annotate it with compiler directives and even use compiler macros to speed up critical parts even more.
I appreciate your opinion but I would appreciate it even more if you would take the trouble to learn more about things before you disparage them.
While a lot of stuff folks did back in the day, a lot of times there wasn't much choice. If you don't have enough (memory | speed) to accomplish the task at hand, you'll start resorting to ugly hacks. There are some interesting articles out there on all the horrible things programmers did to old game systems like the Atari 2600 and the Intellivision that would be considered Hateful today but were necessary to create a lot of good games at the time.
The real problem is lack of documentation, and it's a problem to this day, especially when a programmer is working on a project alone. I know I'm guilty. You should take a look at some of the code I've been writing in the past week. It's like I couldn't put two slashes together to save my life.
Unless you're writing games for mobile phones - especially if writing for a virtual 32-bit processor emulated on an 8-bit physical processor. Ouch!
Please include the following words in the subject of your EMail message:
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.
chongo (was here)
Oh yeah, I agree. I looked at this and just laughed my head off. I couldn't even modify it because it was third-party certified, and this was for a DoD project.
And this was in code for mission critical stuff too. There was a lot of other crap there... I wrote up about 7 problem reports and routed them to the developers contact, the program office, my management, etc...
The only reason we have the rights we have is that people just like us died to gain those rights. -- Cheerio Boy
Sorry, I was just trying to pick a super-slow language at random... but now that I think about it, I guess any reasonably popular language will have a fast compiler or an almost-as-fast byte code. Don't get me wrong, I'm no C phanatic. Haskell is my language of choice, compatability permitting. The purpose of my post was to defend C, not to attack other languages.
Each language has its purpose, however humble. -- The Tao of Programming
First reaction: Yech!
Second reaction: Yeah... that's why I put the word most in my original post. Obviously there are domains where raw speed is paramount; and C and assembly will likely always rule those domains. However, we've reached a point were most apps that people interact with just don't need to go as fast as possible.
-30-
Definition
Goals:
And here is one entry from the IOCCC FAQ that talks about how the IOCCC got started:
chongo (was here)
They intended to have the winning code available today, but the website was designed by last year's winner, and they're guessing it'll take another 6 weeks to figure it out.
They started in January.
Sometimes boldness is in fashion. Sometimes only the brave will be bold.
Sometimes boldness is in fashion. Sometimes only the brave will be bold.
DNA just wants to be free...
I've found that bringing in alien paradigms can be effective. For example, if
you're writing in C, simulate functional programming mechanisms, such as
closures. This by itself is not enough, because someone could be reading the
code who knows Scheme, but it is nonetheless effective, because it will throw
a significant portion of your audience into unmitigated confusion. Only people
familiar with the alien paradigm will even have a *chance* at understanding
what the code is doing.
Cut that out, or I will ship you to Norilsk in a box.
No wonder some folks complain about GTK and Perl.
=D
Really, I didn't even really have a good idea of what a closure was until I learned to use them in Perl. It just seemed natural in Scheme. Sort of like how I didn't really understand certain parts of English grammar until I started learning other languages, even though I could use them fluently.
No harm, no foul. :)
This isn't informative - it's a joke.