The International Obfuscated C Code Contest
Every assignment of rules and starting condition to gate worst-case scenario mattress-on-freeway sit- . Journal of Substance Abuse, Since there are, to date, no breaks in the SHA- URL hockey-jerseys.us IOCCC International Obfuscated C code contest entries - c00kiemon5ter/ioccc- obfuscated-c-contest. We will award 'worst abuse of the rules'. and then plug. Worst Abuse of the Rules: Szymon Rusinkiewicz Massachusetts Institute of Technology Memorial Dr., Room B Cambridge, Ma USA Judges'.
Now consider the snippet of code I would call very frequently to move all the aliens around the screen. I would almost undoubtedly write it like this: It's exactly descriptive of what I want, but it's short enough that I can type it a thousand times without going mad.
This is probably an array you'll be using a LOT.
- By Jack Ganssle
- IOCCC news
- The example case
As well, I simply called the loop variable, without any extra comment, i. When first getting into the whole descriptive variable name thing, it can be tempting to call it "counter" or something like that. The point of naming a variable is to enable the reader to instantly go, "Oh. I know what that does.
Of course, it's possible to be much more careful about variable naming than this. For example, there is something called Hungarian Notation. There are lots of flavors of this, but the basic idea is that you put a tag at the beginning of a variable name saying what type it is. So all unsigned long variables begin with ul, etc. This is a bit fussier than I like to get, but it's something you should know about.
It's possible to spend too much time making things clear, but it takes some effort. If it's a decently sized program, it's going to have a lot of functions and procedures. As excruciating as it is, every one of them should have a bit of error checking. How can this poor, fluffy bit of code defend itself and keep the computer from exploding?
The main goal of our groovy space game is to kill aliens and accumulate points, so we'll need a procedure to alter the score. Furthermore, when we add points, we want to call a routine that draws pretty sparkles on the score. So here's a first pass: What could go wrong here? First, an obvious one.
Do we want to allow the player's score to go down? But there is nothing in the description of the game I gave earlier that mentions losing points. Plus, games should be fun, and losing points is never fun. So we will say a negative number of points is an error and must be caught.
That one was easy. But here is a more subtle problem and one I deal with in my games all the time. This is a very plausible situation. Remember, we are giving a bonus at the end of every wave, based on how quickly the player completes it. What if the player is super slow? And we decide to give a bonus of 0 in that situation? Then it's entirely possible, at 3 a.
The problem here is that we probably don't want the scoreboard to flash with pretty colors when the number displayed doesn't change. So we want to catch that. Let's try this code: And note that this was a very simple function. None of the fancy, newfangled pointers you crazy kids like to use.
And the advantages of doing this don't end at keeping your program from exploding. Good error checking makes it faster to debug too.
Suppose you know that you are writing data outside the bounds of some array, and you're going through your code looking for where that might happen. When you look at a procedure where all of your error checking is in order, you don't have to spend time picking through it to find the mistake. This saves tons of time, and it bears repeating. Time is the most valuable resource we have. But you can find it on Wikipedia, so it must be really smart. Unless you are trying to make people suffer, your first goal, when writing code, should be clarity.
Simple code is faster to write, faster to understand when you return to it later, and faster to debug. Optimization is the enemy of clarity. This sour joke seldom has to be said in full; if two hackers are looking over some code together and one points at a section and says "job security", the other one may just nod. A programmer who is characterized by large and somewhat brute-force programs.
When modified by another noun, describes a specialist in some particular computing area. Badly written, possibly buggy code. Used most often with a programmer who has left the shop and thus is a convenient scapegoat for anything that is wrong with the project.
A Boss's Quick Start to Firmware Engineering
In the classic first-contact SF novel "The Mote in God's Eye", by Larry Niven and Jerry Pournelle, an alien describes a very difficult task by saying "We juggle priceless eggs in variable gravity.
Named after a particular IRC user who did this to NickServ, the robot in charge of preventing people from inadvertently using a nick claimed by another user. That is, correctly handle a segment with the maximum combination of features at once e. In the early days he used to hand-cut distribution tapes, often with a note that read "Love, ken". Similarly, Dennis without last name means Dennis Ritchie and he is often known as dmr.
This was originated by the Software Support group at Symbolics because the two greatest flamers in the user community were both named Ken. A summary of what happens whenever valid data is passed through an organization or person that deliberately or accidentally disregards or ignores its significance. Consider, for example, what an advertising campaign can do with a product's actual specifications.
Six ways to write more comprehensible code
James Parrya Usenetter infamous for various surrealist net. Thus to add a person or subject to one's kill file is to arrange for that person to be ignored by one's newsreader in future. By extension, it may be used for a decision to ignore the person or subject in other media. The application that actually makes a sustaining market for a promising but under-utilized technology. First used in the mids to describe Lotus once it became evident that demand for that product had been the major driver of the early business market for IBM PCs.
The term was then restrospectively applied to VisiCalc, which had played a similar role in the success of the Apple II. After it became commonplace to describe the World Wide Web as the Internet's killer app.
One of the standard questions asked about each new personal-computer technology as it emerges has become "what's the killer app? Often heard in "No one will survive the attack of the killer micros!
Eugene Brooks was right. It's networked killer micros as far as the eye can see. These two words have been confused in American usage since the early s, and widely confounded in Great Britain since the end of World War II.Most tweetable 1-liner -- IOCCC2013 endoh3.c
A long-ago "Datamation" article by Jackson Granholme similarly said: To use a kludge to get around a problem. It apparently became confused with U. A Rube Goldberg or Heath Robinson device, whether in hardware or software.
A clever programming trick intended to solve a particular nasty case in an expedient, if not clear, manner. Often used to repair bugs. Something that works for the wrong reason. To insert a kluge into a program. However, there is reason to believe this slang use may be a decade older. Several respondents have connected it to the brand name of a device called a "Kluge paper feeder", an adjunct to mechanical printing presses. Legend has it that the Kluge feeder was designed before small, cheap electric motors and control electronics; it relied on a fiendishly complex assortment of cams, belts, and linkages to both power and synchronize all its operations from one motive driveshaft.
It was accordingly temperamental, subject to frequent breakdowns, and devilishly difficult to repair -- but oh, so clever!
The result of this history is a tangle. Phonetically, consider huge, refuge, centrifuge, and deluge as opposed to sludge, judge, budge, and fudge.
Whatever its failings in other areas, English spelling is perfectly consistent about this distinction. Some observers consider this mess appropriate in view of the word's meaning. Knights of the Lambda Calculus: Configurable options, even in software and even those you can't adjust in real time. Knuth's "The Art of Computer Programming"] Mythically, the reference that answers all questions about data structures or algorithms.
A safe answer when you do not know: A Zen teaching riddle. Classically, koans are attractive paradoxes to be meditated on; their purpose is to help one to enlightenment by temporarily jamming normal cognitive processing so that something more interesting can happen this practice is associated with Rinzei Zen Buddhism.
The posting was actually forged by Piet Beertema as an April Fool's joke. This was probably the funniest of the many April Fool's forgeries perpetrated on Usenet which has negligible security against thembecause the notion that Usenet might ever penetrate the Iron Curtain seemed so totally absurd at the time. In fact, it was only six years later that the first genuine site in Moscow, demos. Some readers needed convincing that the postings from it weren't just another prank.
Eventually he even arranged to have the domain's gateway site named kremvax, thus neatly turning fiction into fact and demonstrating that the hackish sense of humor transcends cultural barriers.
Antonov also contributed the Russian-language material for this lexicon. Though the sysops were concentrating on internal communications, cross-border postings included immediate transliterations of Boris Yeltsin's decrees condemning the coup and eyewitness reports of the demonstrations in Moscow's streets.
Card readers tended to jam when they got to one of these, as the resulting card had too little structural strength to avoid buckling inside the mechanism. Card punches could also jam trying to produce these things owing to power-supply problems. Curiously, people will often complain "I'm really lagged" when in fact it is their server or network connection that is lagging.
A person who downloads much, but who never uploads. Someone who tries to crack a BBS. Someone who annoys the sysop or other BBS users - for instance, by posting lots of silly messages, uploading virus-ridden software, frequently dropping carrier, etc.
A proposal on command line flags - Programming Puzzles & Code Golf Meta Stack Exchange
In phreak culture, a lamer is one who scams codes off others rather than doing cracks or really understanding the fundamental concepts. A person, usually an experienced or senior software engineer, who is intimately familiar with many or most of the numerous restrictions and features both useful and esoteric applicable to one or more computer programming languages.
A language lawyer is distinguished by the ability to show you the five sentences scattered through a plus-page manual that together imply the answer to your question "if only you had thought to look there". Since around Perl has rapidly been gaining favor, especially as a tool for systems-administration utilities and rapid prototyping.
Python, Smalltalk and Prolog are also popular in small but influential communities. The LART classic is a 2x4 or other large billet of wood usable as a club, to be applied upside the head of spammers and other people who cause sysadmins more grief than just naturally goes with the job.
Perennial debates rage on alt. To use a LART. Some would add "in malice", but some sysadmins do prefer to gently lart their users as a first and sometimes final warning. Describes a period of monomaniacal concentration on coding apparently passed through by all fledgling hackers.
Can last from 6 months to 2 years, the apparent median being around 18 months. To print a given document via a laser printer. Kung Pao Chicken, a standard Chinese dish containing chicken, peanuts, and hot red peppers in a spicy pepper-oil sauce. The name is derived from the color of the sauce, which is considered bright enough to glow in the dark as, mythically, do some of the inhabitants of Chernobyl. Lew Lasher was a student at Harvard around who became notorious for such behavior.
It was often uttered in a critical tone; when the ratio of leaf sites to backbone, rib, and other relay sites got too high, the network tended to develop bottlenecks. Now that traffic patterns depend more on the distribution of routers than of host machines this term has largely fallen out of use.
With qualifier, one of a class of resource-management bugs that occur when resources are not freed properly after operations on them are finished, so they effectively disappear leak out. This leads to eventual exhaustion as new allocation requests come in.
Use of userid and password information obtained illicitly from one host e. BBS culture specifically defines a leech as someone who downloads files with few or no uploads in return, and who does not contribute to the message section. Ohm's law was broken. An incandescent light bulb the filament emits light because it's resistively heated. Quasi-acronym for Linear Interpolation, used as a verb or noun for the operation. Under Unix, a letterbomb can also try to get part of its contents interpreted as a shell command to the mailer.
This program would draw on a selected victim's bitmapped terminal the words "THE BAG" in ornate letters, followed a pair of jaws biting pieces of it off. A cellular-automata game invented by John Horton Conway and first introduced publicly by Martin Gardner "Scientific American", October ; the game's popularity had to wait a few years for computers on which it could reasonably be played, as it's no fun to simulate the cells by hand.
Describes a slow, difficult, and disgusting process. First popularized by a famous quote about the difficulty of getting work done under one of IBM's mainframe OSes. Used to describe a task thought to be impossible, esp. There is a legend that, weary of inconclusive talks with Colombia over the right to dig a canal through its then-province Panama, he remarked, "Negotiating with those pirates is like trying to nail currant jelly to the wall.
Probably some twit hardcoded a buffer size. The bug was triggered by having the text of the article start with a space or tab. The bug itself was still occasionally reported to be lurking in some mail-to-netnews gateways as late as Any chunk of data in a file or elsewhere that looks like the results of line noise in sense 1.
Text that is theoretically a readable text or program source but employs syntax so bizarre that it looks like line noise in senses 1 or 2. Yes, there are languages this ugly. To feed paper through a printer the wrong way by one line most printers can't do this. On a display terminal, to move the cursor up to the previous line of the screen. A character or character sequence that causes a terminal to perform this action.
Today, the term might be used for the ISO reverse line feed character 0x8D. Even among hackers it is considered a bit silly. Of an algorithm, having running time that is O N log N. Link farms save space when one is maintaining several nearly identical copies of the same source tree -- for example, when the only difference is architecture-dependent object files.
The natural decay of web links as the sites they're connected to change or die. The player is then commonly left as a statue in the game, and is only removed after a certain period of time an hour on most MUDs. To examine a program closely for style, language usage, and portability problems, esp. Excess verbiage in a document, as in "This draft has too much lint". Nobody in the hacker culture has been as readily recognized by first name alone since Ken Thompson.
The free Unix workalike created by Linus Torvalds and friends starting about This may be the most remarkable hacker project in history -- an entire clone of Unix forand Pentium micros, distributed for free with sources over the net ports to Alpha and Sparc and many other machines are also in use. But the Free Software Foundation didn't produce the kernel to go with that toolset untilwhich was too late. An earlier version of this entry opined "The secret of Linux's success seems to be that Linus worked much harder early on to keep the development process open and recruit other hackers, creating a snowball effect.
From an old joke about two lions who, escaping from the zoo, split up to increase their chances but agree to meet after 2 months.
When they finally meet, one is skinny and the other overweight. The thin one says: I ate a human just once and they turned out a small army to chase me -- guns, nets, it was terrible. Since then I've been reduced to eating mice, insects, even grass.
And nobody even noticed! The two parts of this book contained 1 the entire source listing of the Unix Version 6 kernel, and 2 a commentary on the source discussing the algorithms. Because Western Electric wished to maintain trade secret status on the kernel, the Lions Book was only supposed to be distributed to affiliates of source licensees. In spite of this, it soon spread by samizdat to a good many of the early Unix hackers. The Lions book lives again!
In a neat bit of reflexivity, the page before the contents quotes this entry. Accordingly, it has undergone considerable adaptive radiation over the years; modern variants are quite different in detail from the original LISP 1. Its partisans claim it is the only language that is truly beautiful. This is a self-defeating tactic; it merely forces mailing list servers to require confirmation by return message for every subscription.
The PDP and VAX families of computers and Intel microprocessors and a lot of communications and networking hardware are little-endian. The term is sometimes used to describe the ordering of units other than bytes; most often, bits within a byte.
Refers to actual real-world data or a program working with it. For example, the response to "I think the record deleter is finished" might be "Is it live yet? So a more appropriate response might be: Data that is written to be interpreted and takes over program flow when triggered by some un-obvious operation, such as viewing it.
One use of such hacks is to break security. Live Free Or Die!: The state motto of New Hampshire, which appears on that state's automobile license plates. A slogan associated with Unix in the romantic days when Unix aficionados saw themselves as a tiny, beleaguered underground tilting against the windmills of industry.