Domain: ioccc.org
Stories and comments across the archive that link to ioccc.org.
Comments · 408
-
Ya!
You're right. What sort of coder could possibly learn and understand complicated, unforgiving syntax? The human mind was just not meant for such things!
-
Re:A "best-practice" in Perl is like...
Yeah, fuck c
-
Re:Style
I'll take your 500k demo, and raise you a 63 line game http://ioccc.org/2004/vik1.c.
-
for a puzzle, try small or 1-line IOCCC winnerIf you are looking for puzzles (but NOT coding style), try some of the International Obfuscated C Code Contest winners:
http://www.ioccc.org/main.html
I'd pick some of the short programs and 1-liner winners.
My favorite 1-line winner was submitted by David Korn (of ksh fame):
Korn's 1987 winning entry
Print out the korn.c source. By just looking at it, ask them to tell you what it does and why.
Note that this 1-liner has stumped some people who have been coding in C for > 31 years. So if they get stuck, help them out by asking asking some questions such as:
In korn.c, what type of symbol is unix?.
And:Why does Korn subtract 0x60? Hint: 'a' in ASCII is 0x61.
And:On a non-Unix system, what will this program do?
p.s. We are in the middle of judging the 2005 entries. There are some good ones this year, IMHO.
-
for a puzzle, try small or 1-line IOCCC winnerIf you are looking for puzzles (but NOT coding style), try some of the International Obfuscated C Code Contest winners:
http://www.ioccc.org/main.html
I'd pick some of the short programs and 1-liner winners.
My favorite 1-line winner was submitted by David Korn (of ksh fame):
Korn's 1987 winning entry
Print out the korn.c source. By just looking at it, ask them to tell you what it does and why.
Note that this 1-liner has stumped some people who have been coding in C for > 31 years. So if they get stuck, help them out by asking asking some questions such as:
In korn.c, what type of symbol is unix?.
And:Why does Korn subtract 0x60? Hint: 'a' in ASCII is 0x61.
And:On a non-Unix system, what will this program do?
p.s. We are in the middle of judging the 2005 entries. There are some good ones this year, IMHO.
-
for a puzzle, try small or 1-line IOCCC winnerIf you are looking for puzzles (but NOT coding style), try some of the International Obfuscated C Code Contest winners:
http://www.ioccc.org/main.html
I'd pick some of the short programs and 1-liner winners.
My favorite 1-line winner was submitted by David Korn (of ksh fame):
Korn's 1987 winning entry
Print out the korn.c source. By just looking at it, ask them to tell you what it does and why.
Note that this 1-liner has stumped some people who have been coding in C for > 31 years. So if they get stuck, help them out by asking asking some questions such as:
In korn.c, what type of symbol is unix?.
And:Why does Korn subtract 0x60? Hint: 'a' in ASCII is 0x61.
And:On a non-Unix system, what will this program do?
p.s. We are in the middle of judging the 2005 entries. There are some good ones this year, IMHO.
-
Obfucksucated code contest
This kind of reviews are really destructive for my goal of winning the obfuscated code contest (http://www.ioccc.org/ can not read any further.
-
My solution
I have been mucking around with the Hibachi web server {yes, the IOCCC version; it's not perfect, sure, but the "current" version is non-free*} and it works really well. Basically, I have a small CGI-enabled HTTP server on localhost, with access to some of the local filesystem; and a big CGI-enabled HTTP server on the remote end. Using surprisingly few cunning stunts {basically a cookie to allow the big server to look up the port number of the little server, which I decided to have as a per-user variable}, I can have the remote webserver embed content served up from localhost into a frameset or iframe. I can also use a local CGI script {on the local Hibachi server} that pulls in image data over a HTTP connection {from the remote Apache server}, mungs it and displays it in an ordinary <img
/> tag. The browser could not care less what host served it up. The image can be static: all the processing is done at my end. Since the slowest part is usually getting the data from the server to the client, this is quite efficient.
It also ought to be possible to prefetch links while the user is busy reading, which would make dialup connections seem a bit faster.
It doesn't quite meet the "zero install" ideal, because it is necessary to compile Hibachi once and start it on login. I may have to write my own web server in Perl -- hence no compiling, and Perl is installed on almost every system.
* {Hibachi 2 is offered on a usage-only licence; the IOCCC-winning version is in the Public Domain. I am not quite sure how this can work, as it is my understanding that all derivative works of a work already in the Public Domain must also be in the Public Domain. But maybe the non-Free version was a derivative of a still-copyrighted predecessor of the PD version.} -
Re:Not a fine art
I agree, but not completely. Paraphrasing the czech theorist Jan Mukarovsky[1]: art is when the aesthetic function is greater than all other functions.
Therefore, I would conclude that programming per se is not art, but that it very well can be - if intended. Consider the IOCCC. While all competition entries do perform some kind of practical function, the main purpose of each one is to be elegant, beautiful, ingenious etc.; properties which we usually associate with art.[2]
[1] Mukarovsky, Jan, "Aesthetic Function, Norm, and Value as Social Facts.", 1936.
[2] Note to self: I need to learn english grammar and spelling. -
ioccc
-
Re:morse code over skypeAh, you mean like this?
#define DIT (
#define DAH )
#define __DAH ++
#define DITDAH *
#define DAHDIT for
#define DIT_DAH malloc
#define DAH_DIT gets
#define _DAHDIT char
_DAHDIT _DAH_[]="ETIANMSURWDKGOHVFaLaPJBXCYZQb54a3d2f16g7c 8a90l?e'b.s;i,d:"
;main DIT DAH{_DAHDIT
DITDAH _DIT,DITDAH DAH_,DITDAH DIT_,
DITDAH _DIT_,DITDAH DIT_DAH DIT
DAH,DITDAH DAH_DIT DIT DAH;DAHDIT
DIT _DIT=DIT_DAH DIT 81 DAH,DIT_=_DIT
__DAH;_DIT==DAH_DIT DIT _DIT DAH;__DIT
DIT'\n'DAH DAH DAHDIT DIT DAH_=_DIT;DITDAH
DAH_;__DIT DIT DITDAH
_DIT_?_DAH DIT DITDAH DIT_ DAH:'?'DAH,__DIT
DIT' 'DAH,DAH_ __DAH DAH DAHDIT DIT
DITDAH DIT_=2,_DIT_=_DAH_; DITDAH _DIT_&&DIT
DITDAH _DIT_!=DIT DITDAH DAH_>='a'? DITDAH
DAH_&223:DITDAH DAH_ DAH DAH; DIT
DITDAH DIT_ DAH __DAH,_DIT_ __DAH DAH
DITDAH DIT_+= DIT DITDAH _DIT_>='a'? DITDAH _DIT_-'a':0
DAH;}_DAH DIT DIT_ DAH{ __DIT DIT
DIT_>3?_DAH DIT DIT_>>1 DAH:'\0'DAH;return
DIT_&1?'-':'.';}__DIT DIT DIT_ DAH _DAHDIT
DIT_;{DIT void DAH write DIT 1,&DIT_,1 DAH;}
The greatest thing is, this program actually converts what you type to Morse code. -
Re:Linux on old boxes...
Hmmm...the lowest end machine I have right now is one of those ancient Gateway Handbooks. It's a tiny little subnotebook, circa 1993, with a 486 SX25 processor and 20 megs of Ram. Firefox is a pipe dream on this machine (FF runs slowly even over the network via X). Dillo is barely usable; it takes about three seconds to redraw the screen (such as when scrolling up or down). I can't get older versions of Netscape or even the Ted word processor to run on this machine. The last major release of FreeCIV does run, albeit slowly, if I use the XAW client.
I might be able to get a Small spreadsheet to run on this antique.
I can't believe that you are running Firefox on a system with only 32 megs of RAM. The Firefox I'm running right now is using over 100 megs of ram, judging by its VSZ size. I know there is an embedded port of Firefox for PDAs, not to mention an embedded version of Konqueror.
Last time I had 24 megs of ram, I used Netscape Navigator 4.x until I could get a system with more memory; it was just not possible to run Mozilla on that machine. -
We've got a winner for IOCCC 2005!
Looks like Apple Safari has won this year's International Obfuscated C Code Contest.
-
Re:Lisp SchemeLisp is essentially the same as scheme.
Lisp is to scheme, as
,uhmm..., C++ is to Pascal. Apart from the parenthesis-heavy syntax, they have very little in common.It's the hardest language to write for IMHO just cause it's out of ordinary.
Well, then you haven't looked very far. The hardest language language to write for is probably Malbolge.
But there are plenty of more mainstream languages that are harder to write for than lisp. As a matter of fact, most mainstream languages are harder to write for than lisp. It just doesn't seem that way to you, because you grew up using different languages, and have not been interested enough to put at least some effort into learning it.
So while lisp seems hard to you, it's certainly not particulary hard for e.g. someone who doesn't already know how to program in some other language.
There was a story of a hacker stole one of the A.I code from the government. The code turned out to be the last 100 pages of the program. It was all closing paranthesis. That should sum up how nasty the language is.
First, what makes you think this story is true. I hereby present the following story as true, there once was a hacker that stole another A.I code from the government. The code turned out to be the last 100 pages of the program. It was all closing braces. That should sum up how nasty C is.
Secondly, bad code can be written in any language. Just like the code at the International Obfuscated C Code Contest sums up how nasty C is.
(PS: I like both C and Lisp! And a lot of other languages...)
-
The acid test for comments and documentation
The ultimate acid test for documentation:
1) Is the documented code clearer than undocumented code?
2) Is it plain to the naked eye that the person could've made the code significanty clearer by having more, less, or different documentation?
Self-contained routines may need little or no internal documenation. Even a multi-page algorithm to do a specific function, like compute sin(x) to 50 significant digits in the days before floating point processors were common, may only need a one-line comment before the code if the variable names are carefully chosen and the code is easy to follow: /* compute sin(x) to 50 significant digits using Taylor Series approximation */
On the other hand, some 4-liners need 800 lines of description to comprehend, particularly anything from this web site. -
Re:Mirrors WITH A CLICKABLE LINK
-
Re:A tattoo of obfuscated C ...That entry was the longest one ever made into a tattoo, however there are hundreds of people around the world who have unknowingly had this entry tattoed on their forearm:
http://www.de.ioccc.org/years.html#1994_smrwow. I didn't realize that I had that tattoo!
...took me a few minutes to figure out why the source wasn't loading. Then I realized that damn Microsoft C loaded it more than 1000 times in the same window! -
A tattoo of obfuscated C ...
This I love - One guy went and had the first ever entry in the ioccc (from 1984) tattooed on his forearm
...
http://tattoo.thomasscovell.com/index.html
This I also love - the first ever entry was a hello world program!
That entry was the longest one ever made into a tattoo, however there are hundreds of people around the world who have unknowingly had this entry tattoed on their forearm:
http://www.de.ioccc.org/years.html#1994_smr
This is really a great competition - lots of fun, lots to learn. Try understanding how some of the entries work, its really a challenge sometimes, and you can learn plenty about C and the preprocessor. -
Past Winners with Spoilers
Here are some past winners with "Spoilers" for what they do. It's already pretty slow though and I'm first post.
-
Re:No surprise
I think we can all agree that music is most definitely an art form? While coding is an art form in some ways, it is most definitely not considered 'art' by the general public. Even most of us in the industry rarely even consider coding to be 'art'.
What about the IOCCC? Obfuscated C code can hardly be described as useful, while people do put long hours into labors of love to produce clever and beautiful programs.
Art is about context. A pile of bricks on a building site is a pile of bricks; a pile of bricks in a gallery is art. A line of code in an application is a line of code. But how do you disqualify an elegant one-liner, as presented for public admiration, from being art? -
Re:That's Just Wrong
Bad science is commonplace, good science is an art form. (Consider e.g. the beauty of general relativity or complex analysis vs. the junk science to satisfy a papers per year quota that you often get.)
The same is true of code. Good code is an art form. Bad code is commonplace. And as the exception that proves the rule, very very bad code is, alas, also an art form.
(n.b. by art here, I guess I mean the production of some kind of work with intrinsic beauty, whatever that means...) -
Re:You should always...
A good programmer who codes in C should be able to understand what is going on. Still it is no substitute for real documentation... Someone should let the folks that enter the IOCCC that they have some of the worst self documenting code I have seen though. It's like trying to read the Xlib programming manuals after a few to many drinks (not recommended and may result in a nasty hangover in the morning).
-
Re:fabrice's other projectsHe is not merely a processor emulating god; he is a coding god in general. Look at his project page. QEmu is not even his most significant project! He the main force behind the FFMpeg project, which is the premier open-source library for all things video-related (including open-source encoders and/or decoders for nearly every video/audio codec known to man). You can thank him for much of the progress that MPlayer/Xine have made, especially on non-x86 systems.
In addition, he has implemented a complete C99 compiler, and a software modem (unfortunately incomplete), which is the hard part of making open-source WinModem drivers. Also, an emacs clone which also happens to have full Unicode support (including bidirectional editing), *and* a built-in HTML/CSS2 renderer with WYSIWYG editing.
And if that wasn't enough, he has won awards in the IOCCC twice. If that doesn't prove he's a true coding god, I don't know what would. He has done all of this in his free time, for no pay. I think it is safe to say that he *really* deserves a sponsorship.
-
Re:No decent langauges...It's valid, but nobody would write code like that.
-
Re:Patents are ok, if they are inventive
You wrote "software patents usually don't come with a useful description of how to actually do stuff, which is sad, since software can be documented by the sourcecode and printed."
I'd suggest that patent descriptions might deliberately be vague and unclear. After all, if the patent office isn't going to care, why go to the bother of describing something clearly?
With regards to your second point, I don't know if you've seen the The International Obfuscated C Code Contest or any Perl code, but it's (relatively) easy to write sourcecode that isn't easy to understand, which means that even requireing source code for software patent registrations might not be much use.
Matt
-
Re:So... who was it?In regards to the parent posting and Larry Wall: The two awards given to Larry Wall and his code are available. His 1986 grand prize is particularly noteworthy.
Note that I am neither confirming nor denying that the anonymous winner is Larry. I just highlighting those two awards and the 1986 entry in particular.
-
Re:So... who was it?In regards to the parent posting and Larry Wall: The two awards given to Larry Wall and his code are available. His 1986 grand prize is particularly noteworthy.
Note that I am neither confirming nor denying that the anonymous winner is Larry. I just highlighting those two awards and the 1986 entry in particular.
-
Re:entry explainedMy guess, based on what was commonly available at the anonymous author's facility in 1984, was that their machine was most likely a Dec Vax or PDP. The C compiler for Un*x on those machines allocated global variables out of bss which was initialized to zero by default.
I do know that Larry Bassel and I tested the entries on a Vax 780 running a BSD-flavored Un*x. The grand prize winner of 1984 assumes you are running on a PDP or a Vax which had a PDP emulation mode. We tested all of the 1984 entries on the same system.
BTW: That entry by Sjoerd Mullender and Robbert van Renesse remains one of the my all-time favorites to this day. Machine dependent entries are discouraged by the guidelines today, but not so in 1984. It was probably that Grand Prize entry, more than anything, that encouraged Larry and I to hold a 2nd IOCCC back in 1985. It was also the fact that the grand prize authors were from Europe that the word "International" was added to the contest name back in 1985.
-
Re:entry explainedMy guess, based on what was commonly available at the anonymous author's facility in 1984, was that their machine was most likely a Dec Vax or PDP. The C compiler for Un*x on those machines allocated global variables out of bss which was initialized to zero by default.
I do know that Larry Bassel and I tested the entries on a Vax 780 running a BSD-flavored Un*x. The grand prize winner of 1984 assumes you are running on a PDP or a Vax which had a PDP emulation mode. We tested all of the 1984 entries on the same system.
BTW: That entry by Sjoerd Mullender and Robbert van Renesse remains one of the my all-time favorites to this day. Machine dependent entries are discouraged by the guidelines today, but not so in 1984. It was probably that Grand Prize entry, more than anything, that encouraged Larry and I to hold a 2nd IOCCC back in 1985. It was also the fact that the grand prize authors were from Europe that the word "International" was added to the contest name back in 1985.
-
Re:Why?
For starters it will be even better if you remove all whitespace and tabs. For more advance examples of better practices of C programming learned over decades of good coding take a look here.
-
Re:Reported last month
Why do people bother with this kind of silliness? Really. We've all witnessed the IOCCC and various other golf-like activities for decades now, so why are we shocked that the definition of a "line of code" is different in this hobbiest sport than it is in the pointy-haired-project-planner world of the LOC?
In code-minimization (golf) and code obfuscation passtimes, a line of code is almost always defined as any source code which is considered valid by the interpreter or compiler, and fits on a standard 80-column green-screen or vt100/ANSI-emulation. -
Bloody address mungerThe link I put in there was an irc link to irc.freenode.net. Looks like slashcode ate it for breakfast =[
Oh, by the way, if you think LISP guys are bad, try asking something (anything) in #perl sometime - the answers you will get will be divided into two categories:
- Four or five people who have F-keys bound to the link for the most excellent Learning Perl
- A couple of people who think a help and discussion channel is a good place to intellectually masturbate after the style of the IOCCC but who aren't skilled enough to put in an entry that goes anywhere except
/dev/null
-
Re:Both these programs are full of BS
Years ago?
This year saw the 17th International Obfuscated C Code Contest. There's some fun stuff in there. -
Time for an IOPC.org?
Does this mean it's time for an International Obfuscated Python Code Contest? (only slightly obfuscated reference to the International Obfuscated C Code Contest )
-
Re:Open Source HP/UX and True64 - PLEASE
Opening HPUX would benefit us all, or make us go insane? If they did do that though, at least they could get one accolade out of it.
-
Re:I will help YOU get a JOB! (Programming puzzles
Umm... your first example won't actually compile, and is therefore not a program. The second example is actually the shortest possible quine, and won the Obfuscated C Code contest in 1994.
-
Fortran
Buddy of mine made tools to do this using FORTRAN, although it did still have its limits.
Seriously - I don't know the intricacies of compiler design but I do know he won the obfuscated c contest several years ago and now works on multiprocessing tools for some very high end uses (like rocket motor simulations for NASA) - all in c. Last time I asked about the project he wasn't using gcc for it because gcc lacks certain libraries he needs (or something like that) - but it is still c.
I would say linux or no, there are many people of "insane genius" addressing this issue. It's not like we didn't know this was coming a decade ago... I mean, just look at transputer. Everything old really is becoming new again. -
Re:Hold Crap!Assembly Language (imperitive style) is the latin of programming. Functional programming is, what, esperanto? Useful in some limited circles, but generally unpopular?
Well, assembly is more like the Latin of the von Neumann architecture (and thus very important to learn), while a functional language like Haskell is more along the lines of the Latin of the mathematics of computation, and thus also important to learn.
Showing off your mastery of OCaml doesn't help anyone understand Haskell better
a) I switched to OCaml, because I am more familiar with it (and able to write proper code off the top of my head in it) and for an example like quicksort, it's very close to Haskell (without the list comprehensions). b) As for showing off my "mastery" of the language, as I pointed out, the definition of rec is in section 1.1 of the OCaml manual. It is the sixth line of OCaml code that someone looking in the manual would see. And if you care, here's quicksort in Haskell (from Haskell.org):
qsort [] = []
And basic programming in an imperative style requires that you document the names of your variables and choose meaningful names
qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
where
elts_lt_x = [y | y <- xs, y < x]
elts_greq_x = [y | y <- xs, y >= x]Yes. And I suppose I should have used lst or theList for l, head for h, and tail for t. But h, t, and l are so common in ML literature and code (much like i and j as throwaway loop counters, and foo, bar, and baz in pseudocode), that a brief amount of exposure to the language would make them instantly familiar. Besides, my use of less and greater didn't seem to help...
BTW: Imperative programming requires that? Since when? Why is it that Perl has its reputation for looking like line noise? Have you looked at the IOCCC entries lately? Crap variable names and lack of documentation are available in all languages...
In a programming language, "+" could be string concatenation, for example, so that "hello" + 3 yields "hello3".
Yeah, in a language with horrible typing properties, but that's a rant for a different time.
Yes, I'm sure it is, somewhere.
Yeah, right at the spot I linked to. In the OCaml manual, under the section that documents the List module.
Actually, the example I gave was straight from the (minimal) introduction to functional programming I got in school. Which re-enforces my point that functional programming isn't so simple, if I got it wrong.
So you got a minimal (and apparently pretty damn poor) education in recursion and FP, and you're using that experience to damn a whole class of programming languages? Does that really make sense to you?
My point was that recursion is usually more complicated than an imperative alternative.
And my point was that you pulled a contrived example of recursion out of a hat and used it to damn FP. As I said, that's akin to my using Duff's device or this example of printing some strings to damn C. The oddball cases don't tell you anything about the average ones...
Doesn't the recursive version need to put n -1 lists on the stack, (until it unwinds to the empty list), each of size one smaller? I get n-1(n-2)/2 space usage for an operation that should take 2*n space. Am I wrong? Is this a bad example?
Well, depending on how you implement it, yes. As a pure recursive process, it will consume linear space instead of constant space (in terms of stack frames). However, you can use an iterative (tail-recursive) process (with a recursive procedure) to use constant stack space. Ex:
let tr_map f lst =
let rec map_helper f lst acc =
match lst with
[] -> List.rev acc
| head::tail -> map_helper f tail ((f head)::acc) in
map_helper f lst [];; -
Re:Hold Crap!Assembly Language (imperitive style) is the latin of programming. Functional programming is, what, esperanto? Useful in some limited circles, but generally unpopular?
Well, assembly is more like the Latin of the von Neumann architecture (and thus very important to learn), while a functional language like Haskell is more along the lines of the Latin of the mathematics of computation, and thus also important to learn.
Showing off your mastery of OCaml doesn't help anyone understand Haskell better
a) I switched to OCaml, because I am more familiar with it (and able to write proper code off the top of my head in it) and for an example like quicksort, it's very close to Haskell (without the list comprehensions). b) As for showing off my "mastery" of the language, as I pointed out, the definition of rec is in section 1.1 of the OCaml manual. It is the sixth line of OCaml code that someone looking in the manual would see. And if you care, here's quicksort in Haskell (from Haskell.org):
qsort [] = []
And basic programming in an imperative style requires that you document the names of your variables and choose meaningful names
qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
where
elts_lt_x = [y | y <- xs, y < x]
elts_greq_x = [y | y <- xs, y >= x]Yes. And I suppose I should have used lst or theList for l, head for h, and tail for t. But h, t, and l are so common in ML literature and code (much like i and j as throwaway loop counters, and foo, bar, and baz in pseudocode), that a brief amount of exposure to the language would make them instantly familiar. Besides, my use of less and greater didn't seem to help...
BTW: Imperative programming requires that? Since when? Why is it that Perl has its reputation for looking like line noise? Have you looked at the IOCCC entries lately? Crap variable names and lack of documentation are available in all languages...
In a programming language, "+" could be string concatenation, for example, so that "hello" + 3 yields "hello3".
Yeah, in a language with horrible typing properties, but that's a rant for a different time.
Yes, I'm sure it is, somewhere.
Yeah, right at the spot I linked to. In the OCaml manual, under the section that documents the List module.
Actually, the example I gave was straight from the (minimal) introduction to functional programming I got in school. Which re-enforces my point that functional programming isn't so simple, if I got it wrong.
So you got a minimal (and apparently pretty damn poor) education in recursion and FP, and you're using that experience to damn a whole class of programming languages? Does that really make sense to you?
My point was that recursion is usually more complicated than an imperative alternative.
And my point was that you pulled a contrived example of recursion out of a hat and used it to damn FP. As I said, that's akin to my using Duff's device or this example of printing some strings to damn C. The oddball cases don't tell you anything about the average ones...
Doesn't the recursive version need to put n -1 lists on the stack, (until it unwinds to the empty list), each of size one smaller? I get n-1(n-2)/2 space usage for an operation that should take 2*n space. Am I wrong? Is this a bad example?
Well, depending on how you implement it, yes. As a pure recursive process, it will consume linear space instead of constant space (in terms of stack frames). However, you can use an iterative (tail-recursive) process (with a recursive procedure) to use constant stack space. Ex:
let tr_map f lst =
let rec map_helper f lst acc =
match lst with
[] -> List.rev acc
| head::tail -> map_helper f tail ((f head)::acc) in
map_helper f lst [];; -
Re:Software Patents Sometimes GoodSoftware implementation is already covered by copyright. The algorithm inside the software was never previously patentable, as a result most existing software is built on algorithms that haven't been disclosed. YOU CAN'T TELL THE ALGORITHMS USED FROM THE COMPILED RESULT. Hence prior-art can't be established because you can't see inside the old software.
If copyright is sufficient, then all code would be open sourced. If all code was open sourced, then you could see inside old software. If you could see inside old software, you could establish prior art. You can't establish prior art because you can't see inside old software because all software is not open source because (drumroll) copyright is insufficient.
Because seriously, if copyright was insufficient, what do you have to gain by keeping your product closed source? You run the risk of having someone patent your methods out from under you, but what do you gain? You save yourself the embarrassment of having your shitty code exposed - glory be to the wonderful technological innovations preserved here.
It seems offensively clear to me that it would take someone wholly submissive to the pedagoguery of their heroes - brilliant computer programmers but, at best, amateur lawyers - to believe that copyright is sufficient at protecting software implementation.
Seriously, how many copyrights would you need to protect the implementation of a simple piece of code?
-
Re:Nice illegal CD
Easy: Install the "keg" game from here
If you are a lousy programmer and cannot read the code, here are some hints ;-)
More seriously. Make sure you have Shockwave/Flash installed on the live cd's, or people trying out the browser experience will get pretty disappointed. (Visiting their favorite page, and it "doesnt" work. -
Blame emacs!
It's no wonder, they're running it on emacs, clearly. I mean, just look at this comment from one of the hint files:
The keyboard driver can cope with the basic alpha-numeric keys, but gets confused by fancy things like 'shift' or 'backspace'.
In the text-file viewer, 'vi', the up/down and pgup/pgdn keys scroll up or down by one line. There is nothing to stop you [from] scrolling above the top of the file, and pressing any other keys may have an undefined effect.
Damned emacs zealots ;-) -
Re:MirrorsAsia
www.tw.ioccc.orgAustralia and other Pacific
www.au.ioccc.orgEurope
www.de.ioccc.org
www.es.ioccc.org
www.gr.ioccc.orgNorth America
www0.us.ioccc.org
www1.us.ioccc.org -
Re:MirrorsAsia
www.tw.ioccc.orgAustralia and other Pacific
www.au.ioccc.orgEurope
www.de.ioccc.org
www.es.ioccc.org
www.gr.ioccc.orgNorth America
www0.us.ioccc.org
www1.us.ioccc.org -
Re:MirrorsAsia
www.tw.ioccc.orgAustralia and other Pacific
www.au.ioccc.orgEurope
www.de.ioccc.org
www.es.ioccc.org
www.gr.ioccc.orgNorth America
www0.us.ioccc.org
www1.us.ioccc.org -
Re:MirrorsAsia
www.tw.ioccc.orgAustralia and other Pacific
www.au.ioccc.orgEurope
www.de.ioccc.org
www.es.ioccc.org
www.gr.ioccc.orgNorth America
www0.us.ioccc.org
www1.us.ioccc.org -
Re:MirrorsAsia
www.tw.ioccc.orgAustralia and other Pacific
www.au.ioccc.orgEurope
www.de.ioccc.org
www.es.ioccc.org
www.gr.ioccc.orgNorth America
www0.us.ioccc.org
www1.us.ioccc.org -
Re:MirrorsAsia
www.tw.ioccc.orgAustralia and other Pacific
www.au.ioccc.orgEurope
www.de.ioccc.org
www.es.ioccc.org
www.gr.ioccc.orgNorth America
www0.us.ioccc.org
www1.us.ioccc.org -
Re:MirrorsAsia
www.tw.ioccc.orgAustralia and other Pacific
www.au.ioccc.orgEurope
www.de.ioccc.org
www.es.ioccc.org
www.gr.ioccc.orgNorth America
www0.us.ioccc.org
www1.us.ioccc.org -
Gotta love it.Check out vik1.c:
I think they gave him extra points for the comment. /* Some more code */