I know it is illegal to place Easter eggs in code via Microsoft's quarrel with the law a few years back. Microsoft has decided that if you place Easter eggs in code, it is an immediate grounds for termination, but they are still out there in the wild. I know I put my name in the code a lot that will never show up to the users, but it is always fun to do.
So, what Easter eggs have you seen or placed in your programs/code?
One of mine was:
Query = [Current_Step] = 'Scott Rocks'
There is tell around my company of a threadpool-ish class which, in that it monitored child threads, was named Pedophile
. This is all good for a laugh, until your customers call in to complain that your program is crashing with only the message, "Error: Pedophile has no children to watch."
It was late at night, and I was at the client's retail warehouse with my QA guy Paul and my Dell 25Mhz 386. We had been cranking out last-minute changes to the customized point-of-sale software (DOS & Clipper!) for the new chain's flagship store a week or two before opening.
We'd been warned that Tom, a Vice-President of the retail group, was going to participate in the acceptance testing, and he liked to catch people out in mistakes. So I was thinking in terms of sanitizing every input, taking into account every possibility of users monkeying with the system, and considering all corner cases. And, did I say it was late at night? I put a few more sanity checks in the code and we went home.
A few days later, Tom came around for the acceptance testing. The area we'd set aside in the warehouse was crowded with managers and executives. We'd already loaded the new POS software onto the hardware that was to be used in the new store. Tom logged onto the system, ran a no-sale transaction, and bing--the drawer opened and the correct audit receipt was printed. He bought a few items, returned them, exchanged them, entered bogus serial numbers, ran an expired credit card, that sort of thing. The system did exactly what it was supposed to.
Tom looked a little disappointed. He shook things up by entering crazy stuff: letters in the quantity fields, making individual payments in pennies, and so on. And it still worked.
Finally, Tom logged his cashier out and logged a new one in. The system prompted for the starting cash amount in the drawer (for comparison to cashing out at shift's end). Instead of something realistic like 100.00 or 200.00, Tom entered...
-999
And the error message came back:
Tom, you know you can't do that!
The crowd went wild with glee. Tom laughed and conceded that we had indeed thought of everything. He signed off on deployment and we went live on the store with very few problems. And we all lived happily ever after.
This is a bit of a bizarre one.
Shortly before I left my previous company, we rolled out some software I'd played a significant role in developing. The deployment was scheduled for the early evening, but took longer than expected due to some problems. I answered one support call (on my mobile - I was at a geek night) during the evening, and then went home to bed.
At about 2am I was awakened by another call. After half an hour of trying to work out what was going on, I decided to go into the office. I was in my pyjamas and dressing gown, but I decided not to get properly dressed because:
I should point out that my night attire is entirely decent.
When I arrived at the office, the other members of staff there were somewhat surprised. Indeed, they thought it remarkable enough that they took a photo of the event. (Spirits had been temporarily lifted by the fact that the problem resolved itself literally the moment I walked through the door; unfortunately there were other issues discovered and I was actually there for a while longer.)
In the week or two before I left the company, I developed an internal tool (and believe me, this would always be strictly internal) for tracking the kind of problem we had that night. As an Easter egg, I set it so that if you attempted to log into the tool with my account name (which of course would be useless after I'd left) it brought up a dialog box with the photo of me in pyjamas, telling the user off and simultaneously plugging my book. Fortunately everyone in that company has a sense of humour.
I told you it was a bit bizarre :)
EDIT: Due to popular demand...
One application I worked on had an entirely too long "about" dialog text. I rearranged things to put the most useful information at the top, gradually reducing the text size, until at the very bottom was a line in 2-point text (which looked like a divider line) which read "if you can read this, you're too close to the monitor".
I wrote a ruby on rails website (The production code has this and it's live) that has the path /dev/random/ return 4 because of this comic.
I used to work on ASIC designs. ASICs very frequently contain easter eggs, for example every chip I worked on has my initials in ASCII at an undocumented address. Other ASIC designers would include song lyrics. The really gung-ho types would include mode bits to make the ASIC do something outrageous like change some portion of the datastream to "We are the Knights who say Nee!" over and over. I felt that was too risky, if a bug resulted in activating that mode accidentally.
In ASIC design these easter eggs actually serve a legitimate business purpose: as a check for intellectual property theft. Large companies who design a lot of custom silicon do have to contend with their own ASIC designs being stolen and used in products which compete with them. Having the original designers names or intials hidden somewhere in the silicon makes it much easier to prove the misappropriation in court.
Early in my working life, a coworker and I put in an "OhS&^%Exception" buried deep into the code as an inline Easter Egg for a future developer to find and laugh about.
One guess as to the exception thrown during the client demo. And there were no punctuation marks to hide our vulgarity. We kept the client, and got more work from them, but the meeting with my boss afterwards was not pleasant.
I have never, ever, again, put in an Easter Egg.
Once long ago I was part of a team developing a website for a large manufacturing company, and on the homepage they wanted this aerial view of the plant/grounds surrounding the plant. In the distant background of this image was the building of one of their competitors, so as a joke we integrated a complex sequence of actions that once complete would cause a small animated gif of a mushroom cloud to be super imposed over the top of their competitors building, the final frame of which was a burnt crater that stayed there until you refreshed the page. That was by far the best one I've ever been a part of.
I didn't do it, but searching for the answer to life the universe and everything [1] in Google is my favorite
[1] http://www.google.com/search?source=ig&hl=en&rlz=&q=answer+to+life+the+universe+and+everything&aq=0&oq=answer+to+ligoogle recursion [1] (not mine)
Note: This only works on Google.com. When you are on another google homepage, like google.de, use the "Google.com in English"-Link first!
[1] http://www.google.com/search?q=recursion&hl=en:-D
- Synetech
Back when I was working on the x86 compiler/linker for CodeWarrior Professional, I stuck a couple of easter eggs into the development tools:
If your source code had the line "#pragma gauntlet on" in it, then the compiler would randomly say things like "CodeWarrior needs food badly" through the PC speaker when running on Windows. I recorded four different phrases inspired by the arcade game Gauntlet, converted them to low-bitrate ADPCM sound files, then embedded them as data into the compiler in a file that looked like a lookup table.
Also, if you have a function in your application called "__I_choose_you_Pikachu" (or something close to that), and then ran the "Disassemble" command from the IDE on the object code, you'd get an ASCII drawing of the famous Pokemon character in the output and all of the addresses in the listing from them on would be variations on the phrase "Pika Pika".
Finally, while working on the Palm Foleo device, I added a command to the Linux shell called "mole". When run, it would bring up a "Catch-a-Moleo" game where you threw nets on little moles that popped up out of the ground. Each mole was labeled with the name of a different team member. Alas, the device was never released, so no one got to see that outside of Palm.
I recently had to write a web calendar in php. I decided to hard code in the end of the world as an event on December 21, 2012.
Deliberate sanctioned one.
Was building a phone menu system, if the caller somehow reached an end point of the graph that didn't have a message defined - it read out some D&D type quote "you are in a stone passage with 3 doors all alike".
But the details of the message coded where in the graph you were - so when the customer rang up and mentioned this we knew where the customer had missed setting a message. The caller was much more likely to remember stone/3 doors than a long error code string and was much more likely to phone and mention it then if the message had just said "error status 0x123456"
I once was coding something that rated most frequent unigrams, bigrams, and trigrams given a piece of text. I had a large list of all the trigrams on the page, reverse-sorted to have the highest number first. I then added the following line of code:
triTop = allTrigrams[:10] #RAAAARRRRR TRICERATOPS
I guess it's only an easter egg for me, because only I get to see it when I go back to the code, but it makes me chuckle every time. It's the little things ;-)
Remember the 'BOSS key' anyone?
I wrote a PC chat program connected to GENie way back when. It had a Boss Key...
when you pressed it it filled the screen with big letters that said:
HI BOSS !!
My users were not amused!
I wrote a control system for autonomous vehicles that utilized a genetic algorithm in part of the decision-making process. As per XKCD, I added the line:
int becomingSkynetCost = 999999999;
I happen to work for the same company my mother does, and in any app i have made where users are being authenticated i check if said user is her, if it is there is always a "Hi Mom!" displayed somewhere on the following page.
In python 3.0, try this:
import antigravity
geohash
function. - kennytm
from __future__ import braces
on python 2.x - Umur Kontacı
At my previous job using an obscure document composition language, I included:
Bob = "a sweet dude";
...
if (Bob == "a sweet dude"){
//do something
}
I was blissfully unaware that someone else already used the "Bob" variable (I have no clue why) for another field. It was rarely used for one particular letter and for one particular client name. So one day, my boss asked me why one letter read:
"Dear a sweet dude ..."
I figured I would have gotten in more trouble, but my boss just laughed as it was caught before it was sent out. I guess it could have been worse...
var
! Oh wait, this isn't about Javascript. - Marcel Korpel
I put an Easter egg into the PostScript implementation in the DECLaser 1152. I had initially snazzed up the start page with a better overall appearance and put a fan of dog-eared thumbnail document pages on it with a graph, the opening paragraph from Winnie the Pooh in Latin, and a picture of my (now ex-) wife. DEC nixed Pooh and the picture of my wife, so I changed the front panel code so that if you took the printer off line, held down the self-test button then pressed menu-menu-menu-enter-enter-enter, you will get a full page picture of my ex.
When I was working on Acrobat Search for the Macintosh, during development if you pulled up the search about box and typed 'homer' it would put up a picture of Homer Simpson and play the sound "I am so smart. I am so smart. I am so smart. S-M-R-T. I mean S-M-A-R-T." That was pulled before release and I slipped in two other Easter eggs. If you option click in the search about box, you get a slide show of all the entire team and their names. If you type in my last name in lower case 'hawley' you get to play break-out. The break out code took under 1K and played in 1-bit, 8-bit, or 24-bit color.
Just silly harmless stuff.
Like letting the splash screen of an application (in between the normal "Doing this", "Preparing that", "Loading stuff", "Opening main window" that cycle along rather quickly on startup) briefly show "Programmer is ## years old today!" for three seconds on my birthday in yellow letters on a red background and then continue normally.
With a rather obscure registry key somewhere to make sure it only showed once per year per machine so that if users start it again ("WTF was that?") it would not show up again until the next year... ;-)
I once wrote an OS that occasionally displays random error messages with cryptic error messages and hex numbers on a blue background. - Bill Gates
There's an Easter egg in JFugue [1], my Java music programming API. JFugue lets you specify chords really easily:
player.play("Cmaj Dmin") // Play a C-major chord, then a D-minor chord
I implemented 30 chords... major, minor, diminutive, dominants, etc. Buried in the code is one chord that you won't find in any piano book:
player.play("Cdave")
It's actually a pretty nice chord!
[1] http://www.jfugue.orgMy most memorable easter egg was the one that I forgot about.
I developed a heat loss calculation software as a freelance project back in 1998. 2 or 3 years later, someone sent me a screenshot of a hex editor, showing HEAT.EXE and the text below highlighted:
MIDDLE OF THE NIGHT - HAD BEER - SSG APR '98
He knew my nickname so he thought I might be involved with the text. I was surprised myself as well since I didn't remember adding that text to the executable.
While looking at the screenshot I remembered how I spent nights awake drinking beer and writing code. I guess I was just too tipsy at the moment to remember what I was doing. Luckily rest of the software turned out fine. At least, I heard that it was still in use couple of years ago :)
I guess it's rare to be surprised by one's own easter egg.
Added a -nostalgia command line option to a tool that is part of a backup suite that spits out the following:
Yesterday, All those backups seemed a waste of pay. Now my source files have all gone away. Oh I believe in yesterday.
Suddenly, There's not half the files there used to be, And there's a milestone hanging over me. The system crashed so suddenly.
I pushed something wrong What it was I could not say. Now all my data's gone and I long for yesterday-ay-ay-ay.
Yesterday, The need for back-ups seemed so far away. I knew my data was all here to stay, Now I believe in yesterday.
This Story [1] has to be one of my favorite "eggs" gone wrong.
[1] http://thedailywtf.com/Articles/We-Burned-the-Poop.aspxI hid an easter egg in one of our in-house maintenance apps.
$ ./restore look
It is pitch black. You are likely to be eaten by a grue.
$ _
Putting a fake Clippy [1] into our application, which only appears for one of our users (who used to be on the development team) and gives him slightly, er, rude advice.
[1] http://en.wikipedia.org/wiki/ClippyI created a small application for a previous company, if you clicked just outside the 'OK' button a picture of David Hasselhoff in bikini underwear with gold chains that said "Bling Bling" would pop up.
This isn't truly an easter egg since it's in my personal toolbox file, but after more than one typo while trying to exit Python's IDLE, I inserted the following function:
def exist():
print "Yes, I do."
exit()
I wrote this jQuery based Easter Egg for one website:
if ( window.addEventListener ) {
var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
window.addEventListener("keydown", function(e){
kkeys.push( e.keyCode );
if ( kkeys.toString().indexOf( konami ) >= 0 ) {
$('img').css('-webkit-transition-duration', '10s').css('-webkit-transform', 'rotate(360deg)');
$('a,p,span,h1,h2,h3,input').css('-webkit-transition-duration', '10s').css('-webkit-transform', 'rotate(-360deg)');
$('img').css('-moz-transition-duration', '10s').css('-moz-transform', 'rotate(360deg)');
$('a,p,span,h1,h2,h3,input').css('-moz-transition-duration', '10s').css('-moz-transform', 'rotate(-360deg)');
}
}, true);
}
It use konami code [1]: ↑ ↑ ↓ ↓ ← → ← → B A
When it fires all images and texts on the website rotating. Works only on Chrome, Safari and Firefox browsers.
[1] http://en.wikipedia.org/wiki/Konami_Codekkeys
so it doesn't become too large. - Cristian Ciupitu
Not my Easter egg, but I was amused by the following function declaration, found in the depths of BeOS's system API headers:
/** Returns true if the computer is running. If the computer is powered off, result is undefined. */
bool IsComputerOn();
A later release also added this function:
/* Self explanatory */
bool IsComputerOnFire();
Not an Easter Egg, but a similar "oops".
Back in the day (1998) a company I was with was building a VB6 application that had to work on Windows 95 (different patch levels), Windows 98 (ditto) and Windows NT 4. Deep in the guts of all this was the library "concat.dll". We could not get the software to install correctly and after going round and round for days we determined that this particular library had a different version for each of the OS versions.
In my frantic attempts to try and make the thing go on my local machine (no testing machines or VMs) I took to renaming the file after installation. After several dozen renames I started using profanity in the renames (ashamed to say - I was young - all standard excuses apply).
One of the last ones that I did was concat_ARG_F***_S***.dll (fill in the blanks). I eventually got an install working and off it went. Shortly thereafter I left the company.
A co-worker phoned me up months later to tell me a story.
Apparently the manager needed an install to send out PRONTO and did not have the installer. The manager had gone to my workstation and just scooped up the development directory, burned it to CD and sent it out. Unfortunately that particular code NEEDED the profanity laced file and when the user started the application it popped up a dialog box informing her that concat_ARG_F***_S**.dll was missing.
Needless to say she was less than amused and the company did not get to win that contract.
During my time as a game developer I placed a lot of easter eggs. Gamers just love this.
My favorites are:
Replace all sounds of a game with C64 homecomputer blips and blerps.
Replace all text resources with the word "Malkovic"
Many years ago, when working on the MSDOS Point-of-sale terminal (the one that figures into many of these stories I tell on SO), one of the features was a pop-up calculator. I figured that was a good place to hide Easter Eggs. This being DOS, most people just ignored the ALT key, so any Alt+key combination with the calculator up seemed reasonably obscure enough. So, Alt-C displayed my name as author.
But the one that everyone loved was if you pressed Alt-W, it would play the William Tell Overture (remember, -- late 80's -- getting the PC speaker to do anything more than beep was impressive). When a corporate VP learned about it, he played it through the office PA system. When people asked me why it played that, my answer was "Because the company doesn't have a theme song."
I created a simple web app to search local software from our server at my company. I would index every server and store the data on a Lucene.net index. So the eastern egg I wrote was that if anyone searched for the word "soup" (very unlikely) and there was no results found the page would return a "No soup for you!" message, following a picture of the soup nazi [1] :)
[1] http://en.wikipedia.org/wiki/The_Soup_NaziI put an accidental Easter egg in a software I downloaded from the net and heavily rehacked to suit my needs, used to run a network service. Actually, it was a bug, but still it behaved like an Easter egg. The modified source code was only mine, and used only on my UNIX account.
Now, it happens that someone steals my password and enters into my account. I do realize the crack, report it to who is in charge. Long story short, my account gets suspended for my negligence (it wasn't, but when you are at the first year of the university, you are just a nuisance to get rid of in any way possible).
After a while, a similar network service appears at my university. As the vanilla code was publicly available on the net, I did not suspect anything. Yes, it was highly rehacked to suit the owner's needs, but it did not behave as mine. Until... one day while using the service I triggered my "Easter egg" by accident.
It turned out that the guy owning the service was either the one responsible for the crack on my account, or he was directly in touch with the one who did, and they got my source, rehacked it more, but left the egg as they could not know it.
So it turns out that Easter eggs are very useful sometimes to pinpoint illegal appropriation of code. Call it signature-by-obscurity, but it worked for me.
Personally, I've never worked on a project that gave me enough slack time to divert my energy away from coding the features as correctly as possible.
I don't think I'd bother adding Easter eggs, even if it were permitted in my company.
It's like the software equivalent of a construction worker leaving a footprint in mortar as a joke. It will stay there for all to see as a sign that the guy was goofing around.
When I worked in Powerbuilder we used a framework called PowerTool which came with a prank command button -- whenever the cursor got within a certain distance of the button, it would start moving around the screen away from the cursor.
I modified the button to only activate if the cursor approached from a particular range of angles and speeds and a timer that would send it back home after a certain period of time.
Since I was support for the app, I'd get calls from the client: "The button's running away from the mouse!"
Obviously I'd have to go see this bizarre behavior in person, but they could never reproduce the problem for me ...
Hey ... I was young, foolish, and it got me out of the office once in a while ...
I like to use "SoylentGreen" as an error level within enumerations. Such as:
public enum ErrorLevel
{
None, // None
Information, // Inconsequential
Warning, // May be important
Exception, // An exception was thrown
Catastrophic, // Application is exited
SoylentGreen // ITS PEOPLE!!! SOYLENT GREEN IS PEOPLE!!!
}
For one application I built primarily on my own time for my company (consider it a gift, a mea culpa for its original version 8 years ago which was highly buggy), I placed the following in the about box:
John would like to thank Paul Garmirian, Litto Gomez and Rocky Patel, without whom this project might never have been completed. (Nor, perhaps, even contemplated.)
Those would be cigar manufacturers (my three favorite, in order of preference). All three are, in app, links to the appropriate web sites.
Also, by special directive of one of the VPs, there's a random chance when you exit it that you will get David Spade saying "Buh-Bye" out of your speakers. (On certain other days, there are random chances of other sounds -- for example, on my birthday, a tiny clip from Pink Floyd's "Time" might play upon exiting.)
At the end of correct initialization:
log << "ERROR: PC LOAD LETTER" << endl;
We hid an ASCII art version of the space150 logo in the home page source code of space150.com (which is upgraded every 150 days). We put it in for fun a few years back, and we've updated it every version.
I was surprised how many job applicants for HTML/CSS positions mentioned they had seen the hidden message in our source code.
Here's a few of the older versions:
and the latest:
I didn't actually put this in, but I was in a factory working on the control system for pour line in a foundry. I won't get into the details but they'd had a safety problem where the line could jam and the pusher that indexed the line was strong enough to rip one of the moulds (thousands of pounds) out of the line and send it flying.
At some point in the past they had installed a laser safety sensor that would detect if a mould started to be pushed up and it immediately cut power to the pusher. This was in a PLC, and the logic contained a coil (similar to a boolean variable) named "oh_s&1t" (only without the obfuscation). In PLC programming, the description of the coil always appears directly over the name of the coil, and in this particular instance it said, "OH S&1T - a mould is flying out of the line, everybody duck!"
That's about as close as I've seen to an easter egg in a PLC...
At my old job I once used http://steghide.sourceforge.net to vent my announces inside image that were used on the companies homepage.
I knew no one would read them, but it made me happy inside to know that my venting where there on the homepage.
When I get in tomorrow, the first thing I'm gonna do is implement a runItsGonnaBlow
exception :)
I stuck an Easter egg into a wizard for an enterprise software service that turned a ListView on that page into a cycling rainbow. Fun, a bit janky, but hey, it's an Easter egg.
The perverse thing is how I hid it - you can only activate it by clicking in a specific unmarked area of the wizard on Saturday the 1st. What poor bastard's going to be working on Saturday?
In 1995 or so we were using the first generation of pen computers and while developing our system for these machines I realized that Douglas Adams' dream of the hitchhikers guide had actually been built, so I arranged it so there was some sequence of clicks that would clear the screen and print "Don't Panic" in large friendly letters.
Well, there's the infamous Paula Bean [1].
[1] http://thedailywtf.com/Articles/The_Brillant_Paula_Bean.aspxMy favourite was on a windows based app that had a green knightrider style progress when the user logged in. We put in an easter egg so if you clicked the username field about 15 times, it would make the progress change red and play the knightrider theme music as you logged in. Not sure anyone ever found it, but it entertained us :)
I didn't do this but I had a coworker once who did an e-commerce site. On the account application screen if you put in each form from top to bottom one character each of 867-5309 (there were 8 fields total) instead of signing up you were redirected to that "All your base are belong to us" video.
I didn't believe him until he showed me on the production app.
I don't actually put easter eggs per se, but I usually put something in the code that only future developer can see. Such as in a company ownership hiarchy class, I named the parents Property "Dom" and the child record property "Sub" and added a useless constant called "SafeWord", that is Sasquatch by default. Usually internal stuff, I'll add something stupid that will only be seen by developers, and is usually documented so as to not confuse them.
LINK [1]
[1] http://blog.myspace.com/index.cfm?fuseaction=blog.view&friendID=108110619&blogID=307009230&Mytoken=D5D5186F-B94F-4CD1-B0840E42CDC98ECE111843999xmas.js
I left this in the codebase after leaving a contract once. During the last week before christmas, every 20th pageload would include that file. The script would wait 30 seconds, then fly a little reindeer-pulled sleigh across the screen at a z-index of zero. It happened fast enough and rarely enough (and always out of the corner of your eye because of the delay) that you could never quite be sure that it had really happened.
To QA's credit, they actually found it the first year.
In a web application I developed:
Expires: Tue, 08 Jul 1986 19:30:00 +100
The date and time I was born on. ;)
And in another application (a management simulation game) when you enter your name as "GOD" your company is named "Heaven", you can only hire angels as employees and your rival is named Devil.
The avatar I use on most sites displays a birthday cake on my birthday and fireworks on December 31 and January 1.
One of my applications shows a pink ribbon logo (a breast cancer awareness thingie) in the about box when a female user opens the dialog in October.
A few other things in other small applications like displaying "Beam me up, Scotty!" when a user hits the upload-button on April 1, etc.
I'm not sure that this is an actual eastern egg but it's fun anyway. Go to http://www.lazurnoe.com/ and click on the bird in the top right corner. I found it in a forum about 4 years ago and it was named "The revenge of the web designer".
For /cities/127.0.0.1.json
and countries/127.0.0.1.json
URIs, the
GeoIP Rest API
[1] returns:
There's no place like 127.0.0.1
[1] https://github.com/rubyorchard/geoip-restCredits screen is a favorite easter egg of mine..
I worked on a genealogical search application [1] that would add a 'Joe Bloggs' from 'Auchtarrader' into one in every 100 searches. Unfortunately I didn't obfuscate it well enough and when I returned to the organisation on a temporary contract a year later it was slighly mentioned on the first day :o)
[1] http://scotlandspeoplehub.gov.ukA GherkinException with the message "You are an ass. Please contact the assmaster" followed by the email address of one of the developers appeared in a friends' tech demo once...
... me, I stick to using song lyrics in nUnit test code. But never for variable names!
I recently made a quiz with health questions about food in Adobe Flash for a client. Some of the questions had animations. For instance: bottles of wine would pop up in a question about wine, chocolate letters would appear animated in a question about chocolate.
One question was about honey and in that question a bee would come flying in and sit itself down on the hairline frame that surrounded the question and answers.
If you had answered the question the bee would go about it's bussiness again and fly off to the side of the screen.
However, if you annoyed the bee by clicking it while sitting on the frame, a cartoon balloon would pop up saying 'Bzzz...' and after you answered the question, the bee would come flying straight towards you.
On a website I designed, we had a picture of various members of our team. In the lower right hand corner, I put a link that had the same color as the background. The only text of the character was the Pi symbol. Clicking the Pi symbol took you to another page of funny pictures of the team members. Sandra Bullock in the Net FTW!!
While debugging some Windows code with a kernel debugger, I found out that one of the Windows Kernel functions responsible for dispatching messages is actually called BozoLivesHere! I guess they couldn't come up with a meaningful name, they went with a creative one.
A few years ago I wrote a TCP diagnostic tool (which is still freely downloadable), originally just for myself. It had some features like sending/reveiving UDP packets, opening SSL/TLS connections, dumping content as hex, forward TCP connections and more.
One day, I added an easter egg to it (it is even in a class called EasterEgg.java, but since the code is not open source, it does not matter). When you configured the forwarder module to forward to host "eASTER" and port name (which usually gets looked up from an embedded copy of /etc/services) "eGG", it would instead open port 5993 (eggs when viewing it upside down on a calculator) and connect to it.
When connecting to that port with telnet, it will just print a few funny messages, and if you connect to it via putty (in telnet mode, not in raw mode) it will play a nice ANSI effect. When connecting with a webserver (http), it returned a funny website with an unload button to close the port again, and when connecting with a POP3 client (any username and any password) it kept returning the same email message over and over again.
It was fun to do the protocol detection, and later I showed it to a colleague and he liked it as well.
The HTTP spec, RFC 2616 [1], says this about response status codes (e.g. "200 OK" or "404 Not Found"):
The Status-Code is intended for use by automata and the Reason-Phrase is intended for the human user. The client is not required to examine or display the Reason-Phrase.
In other words, a browser will only look at the numeric code, not at its description. Armed with that knowledge, when I was making some change in our redirection routines, I have modified the code slightly. To this day, the redirections return the following, slightly unorthodox [2] yet fully functional response:
GET /some/path/that/redirects HTTP/1.1
Host: www.example.com
HTTP/1.1 303 Sea Otter
Location: http://www.example.com/someother/path
[1] http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1.1I am a bit skeptical that it is technically illegal to put easter eggs in software, probably just against company policy.
In any event, here is mine: In a web timesheet App I had an invisible (transparent) image link that would pull up dilbert comic strips.
This isn't an easter egg in code, but rather a code repository easter egg. I've started committing this on every repository I work on.
response.setHeader("X-Powered-By", "BalusC"); // =)
I once worked on a aircraft parts certificate programm. It has some very odd logic to build part lists. So after some errors in that class which builds the part lists, i decided to rework the class and put some exceptions here and there. One exception, as far as i can remember, was there for handle the case of a part has no parent header part on the database. I thought that case could never happen as there is a working transaction on all the parts data modifications, but i deceided to handle that case anyway. So i put something like this (names and phone numbers changed of course):
"If you get this error please call Jon Doe on 089/1234-567"
The name and number was not mine, instead i changed this to the name and number of a co-worker that worked on another product this time, but we did a lot of tech talk from time to time on how to do things here and there.
Guess what happed... Someday a customer calls him and told him about this error message. My co-worker came to me a bit angry, but it was still good for a joke. Of course the error message was changed in the next version. But i still have to giggle when i think of his face the moment he talked to the customer :)
A LONG ago CAD app: Depending on the contents of a control file that specified probabilities at various times a pulsing circle would appear. Every time it reached it's minimum size it would erase the pixel at the center (the effect was it was slowly chomping on the drawing.) It moved around by a modified drunkard's walk--it would keep picking a random angle and a distance, move that one pixel at a time and then pick again. The angle was not truly random, though, it was weighted to favor directions heading towards the cursor, the farther from the cursor it was the stronger the weighting. The effect was that the circle would generally be somewhere in the vicinity of the cursor.
I shipped a control file set to only trigger it in the evening to one customer--I let the top guy know what was up and they had a lot of fun with a few of the users with it.
NOT BY ME but recent and interesting along these lines:
The Bloomberg iPhone App [1] subtly hid an almost undetectable Bozo in the left monitor.
[1] http://www.tuaw.com/2008/09/25/fear-the-bloomberg-bozo/The team was told to build a portal application from scratch. We were given the ability to name it whatever we wished. A few bouts back and forth and we finally came up with a name. Now, personally, I didn't agree with the name. I thought we could be a little more fun in our naming scheme (kinda like Mircosoft with codenames) so I began calling it "CAKE" (From the video game Portal: Still Alive). A few weeks in I was told to stop calling it that and to remove ALL references to it.... So I did.... except for the 3 lines of comments hidden deep in the code:
// The cake is a lie...
// The cake is a lie...
// The cake is a lie...
The first one I heard about was in the 1970's. A Computer Science professor where I was a studying wrote some numerical libraries (Fortran 66, if I recall). He checked the data input thoroughly, and at one point, if the input was so bad as to be unrecognizable, he output a message using Format number 981 (format statements all had statement numbers). This message, output to the printer, provided an uncomplementary description of the user's intelligence, said "Mother Nature may be trying to tell you something," and printed a huge finger in beautiful ascii graphics. Some time later, a colleague from another university called him. It seems he had used this library in a publication. You can guess the rest.
There are still a few stalwarts who recognize "Format 981" as a highly appropriate insult in certain situations.
I created a winforms version of an NES controller (complete with the A and B buttons in the wrong order) using well placed panels and color. When users entered a "super secret key combination," the controller would appear. If they then entered up, up, down, down, left, right, left, right, B, A, Select, Start, it would bring up an admin console.
Also, we implemented several error messages in haiku form in the same application.
Back in the 70's, working on an MVS system, for fun, I created a dataset called
IMMENSE.BUCKETS.OF.SHIT
and had a great laugh when the system printed out the dataset's disposition when the job ended:
IMMENSE.BUCKETS.OF.SHIT PASSED
IMMENSE.BUCKETS.OF.SHIT KEPT
Problem: At the end of the month, my manager received the sorted billing report (datasets were charged). All the organisation's datasets started with TA, so the first dataset in the list was IMMENSE.BUCKETS.OF.SHIT
.
Not something I did, but a friend of mine some time ago.
Working on a login system inside a software, he put in a login attempt restriction - after 3 tries, you get an Error: Exceeded number of allowed logins. Please try again in 15 minutes
error message, and the counter reset after 15 minutes.
A little known fact is that when you try to login 42 times in a row unsuccessfully:
No login for you! Come back, one year. Next.
And you can't login for one year!
A littler known fact is when you try to login 1337 times in a row. You get the following message:
It is pitch black. You are likely to be eaten by a grue.
And everything turns black. If you do anything at all (press a key, click or move the mouse) or nothing at all for 40 seconds, a chomping sound is heard, and a giant mouth eats your screen. After that, a red "GAME OVER. Good luck next time." text appears in the middle of your screen. It turns back to normal when you do anything again.
On another occasion, on a company's website, he put a bacon.html
file, which was a page with bacon flying all over the screen and sounds of screeching pigs. After one of the employees found out, they forced him to take it down...
Going along with the clippy, one of our developers used the maxwell smart agent so you ended up with code like:
Private Sub agtAgent99_Click(ByVal CharacterID As String, ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Integer, ByVal y As Integer)
MySpeak "how you doin? Don't make me get up!", nagtAgent99
End Sub
Private Sub agtAgent99_DragStart(ByVal CharacterID As String, ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Integer, ByVal y As Integer)
MySpeak "Don't put me near that genie freak!", nagtAgent99
MySpeak "Goodbye beeotch!", nagtMaxwellSmart
End Sub
Private Sub agtMaxwellSmart_Click(ByVal CharacterID As String, ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Integer, ByVal y As Integer)
MySpeak "WASSUP YO! Uh oh! Here come duh freaks!", nagtMaxwellSmart
End Sub
Private Sub agtMaxwellSmart_DragStart(ByVal CharacterID As String, ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Integer, ByVal y As Integer)
MySpeak "Why you movin' me beeotch?", nagtMaxwellSmart
MySpeak "Goodbye beeotch!", nagtMaxwellSmart
End Sub
When I was developing an online board game client (Scrabble clone), I took a few hours off to write a Tetris game that used the tile system, accessible by typing "/kalinka" in chat. Ended up playing it much more often than the game itself, having gotten sick of the latter through months of testing, writing, redesigning...
At my last job, one of our team members was selected to be on a reality TV show "Your Mama Don't Dance" with his daughter. Clearly he had to take a temporary leave while the show was being taped and aired. During this time, our team members took stills of the show as it aired and kept them as images which we used as test data in our application. Before he returned, we set the system to use only these images and graphics whenever he was logged in. At the time, he was responsible for testing the app so he received quite a surprise when he returned to find the system literally filled to the brim with pictures of himself dancing on television!
In an earlier life, I wrote a DOS shell, using PDS6 and QBDOS (the main shell and file manager/zip manager apps were written in PDS -- originally begun in QB4 and then migrated to PDS), and the config app was rewritten from scratch in QBDOS (universally despised, but I loved it).
Among its varied features, it allowed the user to select a variety of background "stuff" (can't really call them "images" since it was all in text mode) for the main app (the menuing pages). Users could select various colors, or patterns, including a "twinkling star" background (I wrote an internal "round-robbin" multitasker to enable stuff like that; well, actually, it was necessary to enable semi-stateless interactivity between the various program and application menus; once it was there, I realized I could add the twinklestuff with a few lines of code). Users could define how "big" to twinkle (it used various "star-like" chars, and the user could select how large to have the random twinkling go), and, the twinkelerate (how quickly to twinkle -- everything from a very slow, subtle rate, with the occasional "star" twinkling every so often, all the way up to full-tilt epilepsy-induction mode :)
The random twinkler would cause various "stars" to twinkle by changing the character in any particular cell, and, the brightness of that character. Twinkling would range from completely off (black cell) to full-bright/largest size "star" character.
I did not document the fact that when 1) twinklemode was activated, and 2) the program saw that it was December 25th), it would randomly set a few stars to red, and a few stars to green, while they twinkled.
I came to regret this feature when I started getting panicked calls, along the lines of "I thought I had a virus!"
Argh...
I quickly dropped my plans for stuff like red/white/blue twinking on July 4 and so forth.
When I worked on MapPoint, everyone on the team got to put in a POI (point of interest). It had to be not obvious and not navigable. I, of course, put one in.
A coworker of mine was working on the physics simulation, in double precision, and had a variable for collision volume peneration depth.
Go figure. :)
(He actually started laughing after coding that line, with a very guilty face. AFAIK, we kept it until we changed to single precision a few years later.)
A colleague of mine added an Easter egg where, if the user typed "ABBA" into a certain text box, the entire screen would gamma-fade to black, and be replaced by -- you guessed it -- a photo-montage of the 70's Swedish rock group.
Another colleague, working on the same application, changed the calendar control so that when a user displayed it while holding down certain keys, the grid of month-days would transform itself into a working implementation of Minesweeper.
I once worked on a web app that used javascript, to which I added a check for Sep 19 ( http://en.wikipedia.org/wiki/Pirate_Day [1]), which added a tiny "Arrr" to a random location on the page.
[1] http://en.wikipedia.org/wiki/Pirate%5FDayI wrote an API for Internet probes for a big portal. This was meant to -always- be used with proper CSS defining lots of stuff, including colors of graph with result, that was to be included (created) by the people implementing the API. Instead of using some plain, generic placeholder color, or some eye-screw shouting "CSS MISSING" I created a pretty pastel rainbow palette of colors generated on the fly using some HSV2RGB(sin(...)) and such. Nothing even barely similar to what the Design sent in, but what Design sent in was a general idea of how it should be made possible to look, not how it should always look... Anyway, the API is used widely all throughout the portal and I have yet to see the CSS for bars implemented even once. Rainbows everywhere!
I placed a Konami code [1] inside an authentication form to jump past it (thus using as a recovery method for forgetten passwords) in a very small project :D
[1] http://en.wikipedia.org/wiki/Konami_CodeIn an app which allows you to compose faxes, we added a check, that if you choose no cover page and set the subject to "TPS Report", it doesn't let you send the fax and instead brings up an error message informing you that "We're putting new coversheets on all the TPS reports before they go out now."
As a high school student in the late 90ies, I wrote a database application for my school to store students' grades and print report cards at the end of each school term. I was sure the school's IT guy would look through my code to make sure it was clean in terms of the grades it printed (which it was), so my two easter eggs were surrounded by big comments pleading him to leave them in ;-).
The eggs themselves were rather boring. If a teacher clicked slightly above the login button (some of them were forced to use a computer for the first time in their lives...) they would be encouraged to click more precisely. If the user name matched my physics teacher, the on-screen display would change to his nickname every so often. Sure enough happened while he was presenting the software in front of other teachers...
Aren't all undocumented functions Easter Eggs? ;P
I had an internal plugin for VB6 that added function comments. When "AYBABTU" was entered in the first field and Help|About was accessed, the about page screen showed CATS and said "All your comments are belong to us."
I built a load-tester to pound some of our servers. If you input the correct sequence of parameters, as the app started pounding the server it would play the sound of a Harley starting up, revving, and riding off. I only showed one other dev that it was in there, not that it would have mattered since it was an internal tool.
In a new installer that I'm currently working on for the company that I'm with, the UI is implemented in the start-up application, rather than in the installer itself for reasons that I won't get into here. In one of the dialogues, the user has to choose what gets installed and what doesn't via a tree view control that shows check boxes next to each feature.
To show the check boxes in the various states that they can be in and with the various attributes that they can have, I made up an image list bitmap that contains images of of all possible combinations of states and attributes that any of the check boxes in this control can have. As tree view controls never make use of the image in the leftmost position of such a bitmap, most people would simply leave it blank. I decided to put my initials there.
I know that's not strictly an Easter egg, since no user will ever see it, but anyone else who works on the project after me will see it if they look at that particular bitmap.
I added JavaScript snow to display on the commerce portion of our commerce web-application for Christmas and Christmas Eve.
When working on a Windows application that provided Share Analysis for a big city bank, I added an Easter Egg to the Help About screen.
With the dialog open you had to perform a sequence of clicking the bank logo and typing the letters in the bank's name several times forwards and backwards to eventually reveal a combobox of staff and developers' names and a listbox showing several anagrams of the selected name which I had generated using Anagram Genius [1].
Long after I had left I told one of the employees, who I was still friendly with, how to access it - in the strictest confidence :p - and within days all the analysis staff knew and were checking out their names to see their personal anagrams. Since none of them were rude or derogatory, it went down quite well and became something to show to new joiners as a curiosity.
[1] http://www.anagramgenius.com/My first Windows app ever was one that needed to strip certain information from reports that were provided to my company from a 3rd party. To use the app, search for the report file and click 'Analyze'. If you click Analyze with no report chosen, the 1st time it would tell you how to use the app. The 2nd - 5th times it would have an increasingly sarcastic remark wondering why you couldn't follow simple instructions. If you clicked it after #5, it would close the app. People who found it thought it was pretty amusing.
Once I had to implement a small but important console application which could be controlled using a simple menu. If you entered hugo
, it wrote a character face to the console.
Can't exactly remember how it looked, but it was similar to this:
stop : stop service
paus : pause service until keypress
info : print information about internal state
relo : reload configuration
> hugo
VVVVV
/ \
O| ° ° |O
| * |
\ --- /
>
Hugo was the name of the project leader. I implemented it on a 1st of April and think nobody ever found it.
I've never put an easer egg (per se) - but for an equity trading system I did do this.
The requirement is that once you get a live stock price, you have to accept it within a time limit. End to end it's about 30 seconds, so the idea was to give the user 15 seconds to decide - and to show them a timer to help them know when the price was going to be withdrawn.
For the demo, I was asked to make the timer a lot longer, so they could explain what was happening while the bar counted down. I was asked to make the bar stay for 30 seconds.
30 seconds is the exact same amount of time that is given to contestants on the game-show "Countdown" in each round.
On Countdown, they have a distinctive theme tune...
I implemented an easter egg for testing an application that my team developed as a part of a university project using Zelda inspired ideas.
I added a touch pressing combination on the login screen which would bring up the debug mode so we could seed the database for testing purposes.
By touching: top left, top right, and then touching the logo it would trigger the "Chest opening" sound from A Link to The Past and unlock "debug mode". Basically you were touching an upside down triforce.
It amused the development team, but we took it out for the final deliverable (I didn't someone accidentally finding my debug mode). Here is a screen shot of the login screen. (Everything below the lock only appeared in debug mode):
It made testing much more fun and put a smile on our faces. I think our testing was more effective because of it, it was certainly more enjoyable.
When you press a secret key combination a message box pops up saying:
"When this baby hits eighty-eight miles per hour you're gonna see some serious shit."
The quote is from the "Back to the future" movie. BTW It's an application for car dealers.
One of the icons on our toolbar for an app had a mac truck and building for a toolbar button related to fixed assets. With a specific key sequence the truck would be replaced with Optimus Prime in humanoid robot form and play an audio byte of "Autobots. Transform and rollout!"
In a command line application I wrote there is an undocumented tt command that issues cout << tt
#include <iostream>
#include <zlib.h>
std::ostream& tt(std::ostream& out) {
static Bytef ttc[] =
"\x078\x09c\x06d\x050\x031\x012\x0c3\x020\x0c\x0eb\x0cc\x02b\x074"
"\x05e\x068\x06\x0d4\x09d\x0b7\x0f4\x06a\x08f\x05d\x0fa\x083\x03e"
"\x0be\x076\x02\x089\x093\x0ab\x0ef\x08\x08e\x04\x048\x032\x090"
"\x08a\x04d\x01a\x04b\x046\x03a\x01e\x0f2\x044\x03f\x061\x046\x06b"
"\x095\x0f5\x084\x01\x05f\x07c\x033\x0a2\x0a4\x023\x0a4\x0e\x050"
"\x0fd\x075\x089\x05d\x0bd\x083\x0d0\x0bb\x032\x014\x0ac\x087\x070"
"\x090\x0e2\x0f2\x0e8\x075\x0ea\x059\x0b0\x01d\x0f7\x0c5\x07b\x0ff"
"\x044\x08f\x029\x0eb\x026\x082\x01f\x0ef\x055\x09c\x0c\x059\x033"
"\x06a\x014\x06b\x04b\x0b0\x0ab\x08c\x02e\x0c5\x0a4\x020\x097\x0c"
"\x082\x0d5\x0d7\x02b\x065\x08e\x055\x0c6\x079\x04a\x0d0\x03b\x017"
"\x069\x0a4\x0ac\x07e\x0dd\x09\x0b1\x0d9\x0d2\x0d5\x09a\x0ad\x059"
"\x025\x0e6\x060\x0ca\x056\x0e7\x058\x0f7\x0dd\x056\x016\x058\x076"
"\x043\x097\x03\x01b\x060\x072\x0e2\x06b\x0db\x0ea\x048\x047\x05c"
"\x02a\x07\x01f\x0bb\x08e\x047\x0f\x0a6\x0cf\x0b0\x0c6\x07f\x0c"
"\x0f7\x0eb\x017\x026\x0a9\x065\x026\x046\x03e\x035\x055\x0f\x0e6"
"\x01e\x0c3\x058\x0d2\x0cf\x082\x0cf\x0bb\x0dc\x07e\x0c1\x058\x064"
"\x058";
Bytef tte[636];
uLongf size = sizeof tte;
uncompress(tte, &size, ttc, sizeof ttc);
return out << tte;
}
I had a spreadsheet that was used to import data into another spreadsheet. To confirm that the import spreadsheet is actually the right file, it checked a range named to see if it had the matching text
Hold me closer, Tony Danza
Nothing offensive and well hidden. :)
I made a dealer search Google Maps module for a CMS. The CMS modules usually have a button in the backend that says "Help" and curiously enough opens a help page.
Since at the time of coding I didn't have a help page and didn't really know what to put in there, I made the button redirect to a page with an embedded Youtube video of The Beatles singing "Help".
This was only meant to be as a joke for myself, but I forgot to put it out before the module went live on a customers website, so it is still in production.
Luckily my boss only laughed when I told him about it :)
My team was tasked with creating a simple, read-only website that displayed product information with your standard index, search results, and detail views. The site needed to be internationalized for 8 different languages. All of the data was already internationalized in the database.
The way you switched the language was simple; we had a drop-down selection box in the top right that let you select a language. All this did was redirect you to a different url: mysite.com/en
vs. mysite.com/es
. The site also always default to english text if a certain thing couldn't be found in the translation files or the DB didn't have that data in that language.
We decided to add a 9th language.
Klingon
[1]. Apparently Klingon has a standardize ISO language code, tlh. Even Firefox recognizes it as an "official" laguage and it is availble in the default language options. It wasn't in the drop down options on our site but if you directly requested mysite.com/tlh
, you got to view the site in klingon.
One of our team mates was quite fluent in the language already so he created all of the translation property files. The DB data itself wasn't internationalized though.
Unfortunately, the site looked like garbage unless clients had a Klingon font installed. We also decided it wouldn't be professional to leave it in the final product so we took it out before the first release. Probably for the best in retrospect but we all really wanted to be able to show the easter egg off to our friends when it went live. At least I can share the awesomeness with all of you!
[1] http://en.wikipedia.org/wiki/Klingon_language"I know I put my name in the code a lot that will never show up to the users"
... unless you have a bug, and it actually does show up to the users ...
Do most developers have an intrinsic need to passively demonstrate how clever they think they are?
an early biz application would play Happy Birthday in beep tones and list the employees with birthdays on that day when you booted the app
i wouldn't do that today - no time!
None. Most code I write is production code for customers. More code means more bugs. Easter eggs are extra code, with the added extra chance for bugs (plenty of proof in some of the answers here).
I never allow anyone to write easter eggs in production code, and will never do myself. More code means more bugs.
I put a Tetris-clone in a custom form editting application that I had created a few years back. You had to name the form at time of creation, and if you named it "tetris" it would launch the game inside of the form.
Somehow, one of the testers found it in the first month and I had to remove it. Well... I didn't remove it, it is just trickier to find now. Last I had heard, no one had found it again. I was really hoping that a customer would have found it originally.
By the way, the high score page was all full of programmer personalities with their pre-seeded fake high scores. People like Larry Wall, Dennis Ritchie, (Amazing) Grace Murray Hopper, etc. Not surprisingly, the testers didn't get that part of the game.
I worked for a game company in the 80s developing games and porting games from the PC to the Amiga. One game I worked on was a speed boat racing game, and originally there was this intermission during the middle of a day of racing. I'm no artist, but I made this great cheesy Lunch Time screen that had a big orange cup and a hamburger on it...
The publisher didn't like it, and asked us to remove it. So I hid it.
The combination of things you had to do to get to it was ridiculous - I don't even remember now what it was, but it was holding down 4 or 5 keys and pressing a mouse button at a particular time in the game.
I wish I could remember it because I can still run that game in VMWare and I'd love to see it.
The game was HeatWave [1].
[1] http://hol.abime.net/681I tend to put a few in the comments, from memory:
Roses are Red Violets are Blue In Soviet Russia Function simplify you -- Comment to a Heskell function called simplify, to this day I reget that for some reason I didn't use the function below it (evaluate)
In my first year Java coursework (a clone of early bomberman games) I had an abstract class called BadGuy, all the enemies inherited from it. I chose the name so I could start the class with the lyrics to the Bugsy Malone song "Bad Guys"
Inhereted from BadGuy was another class called WandererAndTheColossus (the literal translation of Shadow Of the Colossus' Japanese title)
I recently worked on a large (state-approved and financed) gambling web application where I was doing, among other things, the account management front end. In one case where an exception was thrown a dialog box would open and read:
"Watch and amaze while the application eats itself!"
The exception was thrown when a very specific credit card transaction failed. This was thought to be extremely rare and only occurr in development since the credit card transaction functionality was mocked and didn't actually perform any transactions. Naturally, when the application made its way to QA this made it's way back to me rather quickly as it seemed it wasn't that uncommon after all. It got a few laughs and then everybody had to make sure there were no other messages like this hidden in the code.
Kudos to anyone who can name the original quote and where it's from.
Just write some horrible code in C, so many weird things will start to happen you will convince yourself they are easter eggs.
Twiddla [1] has an easter egg that should be relatively straightforward to find, but thus far nobody has (or at least nobody has reported it to us)...
Today's hint: recursion
[1] http://www.twiddla.comI named forms authentication cookie in asp.net app as lastname of my co-worker.
And i'm planning to embed this youtube video [1] somewhere. :)
[1] http://www.youtube.com/watch?v=j%5FekugPKqFwYears ago I was on a team building a forms application in VB6 (actually, think it was VB5!). This was a large application with many modules. There was a lot of user testing. One of the users sent an email one day saying that the app would be great if it didn't "act like a biker with a grievous head injury" when a error occurred.
Of course, this email made its rounds and we all had a great laugh. I searched for a picture of a typical biker gang member and put it in the application. I then changed the app so that if the user entered "grievous head injury" in one of fields a new window would pop up with the picture with a message that said "You found the secret message - hope your day is grievous head injury free". Then all of the names of the development and test team would scroll by.
We didn’t tell the users until much later but before it went live. They thought it was very funny – especially the guy who sent the original email.
After that programmers would add Easter eggs to other modules in the application. That app was in production for over 10 years and those Easter eggs were still in there.
Good times.
Back in college in year 1996 I wrote a program for cataloging students' diploma projects. In its About box you could enter Alt+n+a+k+e+d+g+i+r+l+s to see you-know-what. Last time I visited, about 5 years ago, the program was still in use.
A set of applications that I worked on had an in-built haiku generator. You needed to bring up the About dialog, and then by clicking on the application logo the application details would change to a semi-randomly generated haiku.
Not so much an easter egg, but some code I have worked on had a function called Carol. It took a string in, and returned whether it starts with a vowel or consonant.
( http://en.wikipedia.org/wiki/Carol_Vorderman [1])
[1] http://en.wikipedia.org/wiki/Carol%5FVordermanA couple comes to mind ;)
I was one of 2 devs making a system for gov waterworks: double-clicking the about screen image pops up a red/white spotted mushroom.
We also made a change request management system that integrated with SAP: The about screen featured a hidden chat room for users of our system. nVidia ended up using our system 2 years later; Regretfully I removed it to conform to their code reviews.
A job costing system that allows adding of attachments to jobs, showing the file using the system's associated icon. Files with extensions ".666" or ".lol" would show the icon as horns / a smiley face.
I added class Cow
to my project before I left my internship. I wonder if they found it yet? It's a class that replicates the Unix command 'cowsay', for great justice. Nothing fancy, but it works.
A Flash game i have made. I made it during college (the good old days when i had girlfriend, before becoming a code ninja)
The eastern egg, if you type the secret word while playing, a pop dialog will appear asking for a password, put in the password, and the game will transform into a love flash card with her name!!
The games is published somewhere on the internet. :)
I wrote some a simple CRM for our sales people, so that it integrated easily into our super admin area. When a sales person converts our 9000th sale, I'll let Vegeta commend him [1] instead of the normal success page.
[1] http://www.youtube.com/watch?v=TBtpyeLxVkII wrote a print engine to handle all the reports that the software my company wrote produced. At some point I decided that it needed a little extra. If you right-clicked on some little symbol in the corner (no it wasn't pi) with some combination of Ctrl + Alt (can't remember which), an error message would pop up with the text PC load letter.
Closes thing to a easter-egg I put in code was when i was building a utility that was supposed to communicate with a website to fetch a search-result. It demanded that you had a user-agent preset so i set up my code to supply the UA as James Bond.
In an FAQ section in an app that I built 7 years ago I created an automated .gif of the VP of Information Technologies head that bobbled like a bobble head doll. The FAQ was a screen that was never really used, so that was my attempt at an Easter Egg.
I once wrote a '3rd-party' app that acted as a proxy designed to extend the capabilities of the project's client app (read: add things the original designer didn't think of, but that became kind of obvious as the project lived on). The interface was text-based using /commands. My easter egg there was to add a /xyzzy command, that upon execution returned "** Nothing happened.
" ;-)
Since I'm still managing that code, I'll prob. end up adding some event to fire when the user has, say, full admin privs, or something. More of a reference than an easter egg, but that's all I have at the moment.
I did do some funny/weird stuff in the past, but most of it either got thrown out early or was made public as part of the project it was in, as opposed to being a "hidden" useless-but-funny feature.
I had a couple console-based update processes that output the step description and then "success" or "fail". I put the following steps throughout:
Unfortunately, the apps eventually were decommissioned...I don't think anyone ever got to see them. But, it's that kind of humor that keeps it fun.
This wasn't my system, but a system belonging to a coworker... It was a mainframe TSO thing, it was literally YEARS of spaghetti upon spaghetti. One of those systems where nobody wants to touch it lest it collapse under the mass of all the spaghetti and form a singularity.
Anyway, apparently one of the earlier developers was somewhat green and had coded for a situation that should never occur (thus breaking one of the prime rules of programming: never test for a condition you don't know how to handle). Nobody ever noticed, it never happened. Until one day, somebody had to make a small change and through various flag settings and clearings if you went through just the right set of menu options would yield a call from the customer: "We just got an error screen that says 'The impossible has just occurred.'"
I made the falling cows one for webos email application: http://www.youtube.com/watch?v=0ul294a0L7U There's a new one coming for the next tablet update...but I don't want to reveal it just yet.
And yes, the supercowpowers is a reference to the Linux aptitute supercowpowers.
On my Website (currently in development), if someone visits a page with an iDevice and shakes it, Clippy [1] appears and asks:
It looks like you have shaken your device. Would you like help?
The yes button just refreshes the page and no makes him disappear. In the future, I plan on making him say a random quote every time he appears.
[1] http://en.wikipedia.org/wiki/ClippitI make a GUID from my name and surname for the ActiveX that I developed. (obviously as hex)
I was working as a lead-engineer in the development of a car radio/cd. A few times per week, we would give the latest-and-greatest software to both the project manager and the program manager, who were both using the radio in their own car. Especially the project manager was very fanatic in trying to reproduce any issues he discovered.
Somewhere in february/march we had a hardware problem; at times (1 in thousands), the radio would come up with some static on the display. This was a hardware problem which was solved in March. Only at end of March, I've created a special version, only for use by the 2 managers, and never recorded in configuration management... This had some special code which would:
The idea was that the managers would go crazy by
It was a lot of fun to do, and some of the code was used afterwards to show bitmaps rather than just text.
I will however, never leave a easter egg which can somehow end up in production code.
Use jQuery to capture konami code and fire up a lightbox with a photo/graphic that I think is amusing...
Did this on various of web-application projects and seldom get appreciation from others :P
Reference: http://paulirish.com/2009/cornify-easter-egg-with-jquery/
I always include this one:
-(int)getTheAnswerToLifeTheUniverseAndEverything
{
return 42; //according to Douglas Adams
}
-(int)getTheAnswerToLifeTheUniverseAndEverything
- rlemon
Back in 2000 I participated in the development of a fairly web site for a manufacturer of consumer goods. It was rolled out in over 50 countries and had something like 50 hits per second, 24 hours a day - which was pretty much in the pre-twitter-facebook times.
The web site had a contact page, basically an html form with some input-fields.
If you left all fields but (a certain) one blank and entered the magic text "chicks love java developers!" all form validation was skipped and the browser redirected to a image-map with the whole developer team in it and some funny texts which appeared if you clicked each developer right on his nose... :-)
This has been online since 2005 or so.
I once had a co-op (Russian) return nothing but russian profanities on the last catch statements.
In our internal bug tracking software we had this in the JS for a few weeks until one of the product managers stumbled upon it. (was meant to tickle the QA)
window.onkeyup = function(e) {
if (e.which == 27) {
window.open("http://www.youtube.com/watch?v=oHg5SJYRHA0","_newtab");
}
};
On my first rails application, I left a line telling anyone that open the source that the application was done in RoR.
FFFFFUUUUU face as icon on error message (which should never show).