Would You Add Easter Eggs To Software Produced At Work?
Mr. Leinad writes "Do you add Easter Eggs to the software that is produced at the office? I mean, if you have complete control over the final product, do you spice it up with that little personal touch, which, as unlikely as it is that anyone will see, carries with it an 'I was here' signature? I've just finished the development of a large software product, and I have a couple of days left to try to add my own personal Easter Egg code, but given that the software is quite professional, I don't know if I should. What do you think? Should we developers sign our creations?"
Subtlety is key, even if it's for something like proving the program was coded by you if some asshole attempts to take credit...
Of course! Doing so in an unobtrusive, unharmful way only adds charm to the product.
Need an automatic screenshot taker? Try here.
You know, I'd have to say it really depends on whose site it is and what the site is promoting. I tend to be a bit conservative with my clients, so for something you describe and "professional," I'd probably leave my signature out of it. Save that for the more adventurous sites.
Several large software companies have left easter-eggs in "Professional" products. Microsoft office had pinball and a flight simulator, I seem to remember.
Not that I added anything to that nuclear launch program. No, the other one.
The 'story' tag never ceases to amaze me. It even pops up in questions!
Getting such things past the pointy heads is just good fun. Getting the doomsday code past them is a riot.
I'd go on a Vegan diet but the delivery time from Vega is too long. --brownkitty
Easter Eggs? No, funny comments/error messages, and bizarre variable names, absolutely.
I will never forget the day a student who was using my software for a project asked during a meeting what an 'out of cheese' error was. The poor kid was so confused :)
A learning experience is one of those things that say, 'You know that thing you just did? Don't do that.' - D. Adams
Quite often they end up being useful and get cleaned up and documented in subsequent releases.
Is a pending accident waiting to happen. Maybe because the change adding the Easter Egg the application have a problem (security, speed, space, whatever), maybe people find or know about your easter egg, do every possible misuse of the application to try to find another, and something breaks somewhere. And adding something not requested/approved by your company is a bad precedent, another way to put an "i was here" message is called "backdoor".
Something like
You know the Rules, and so do I...
We're never going to give you up,
We're never going to let you down,
We'll never run around and desert you....
If your "easter egg" causes bugs that end up costing the company money, your ass is grass.
The mere fact that you are asking this question tells me you lack any kind of professional integrity.
I worked on the Lexmark MarkNet print servers and adapter cards back in the 90s. We had an easter egg that would print a page with all the firmware developers' names in it when you pressed the buttons on the adapter in a certain order. With the insane amount of stuff those little things did -- they were basically a complete Unix server in a little box, not bad for its time -- we figured we could give ourselves a pat on the back. Even if nobody probably ever saw it, at least we knew it was in there.
No. You shouldn't.
-- -- Warning. Do not stare directly at the sun.
My personal take on this is to go ahead. First, the world NEEDS to step back from the super-serious attitude, but still be polite. Second, coding is as much art as science and I think your paintings, songs, code, engineering, etc should all have your personal mark, something to make it identifiably yours. Third (kinda goes with the first) doing so can be a moral booster for you AND those who discover it.
However, there are issues to keep in mind. You must keep it professional, so no vulgarity, rudeness, or jokes about loss of data. Certainly, you should avoid all the '-isms' like the plague. And, just as important, it should be clear that the Easter Eggs do not break security in any way.
In short, make it secure, polite, fun and it should be cool.
I hope this comment is well received... I could have moderated instead!
Persecutors will be violated!
I occasionally toss little jokes in for QA to find. Keeps them honest.
Comment removed based on user account deletion
Most of the projects I've been on never left me with time for fun stuff like that.
crazy dynamite monkey
Yes, you should. Just do so in good taste. I once put The Story of Mordac(tm) into a script that I made and distributed around the office, which described in a humorous and epic way the reason for its invention: All it did was send F5 to a window with a specified name.
We were running HP Service Desk and the admins, in their infinite idiocy, disabled the auto-refresh of the views. This was because they seriously under-spec'd the server and were looking for any way possible to cut the load down. It crashed every few hours; Which is what you get for using Citrix for over five thousand workstations in six different countries for "security" purposes. And then using RAID10 on the database... oh god, the write times, they buuuurnses us. *snickers* In either event, after distributing it to our techs and letting it bounce around the working grunts in our various offices for awhile, I let it slip to a few friends about the story of Mordac, Preventer of Information Services (thank you Dilbert), who I credited with the debacle.
Two weeks later, the auto-refresh got turned back on. Many queries were made and security operations attempted to track down who had made the "unauthorized script". To this day, whenever a feature gets turned off on a server that the users liked, or some dumb "security" policy goes into place... People chalk it up to Mordac. Many of them aren't familiar enough with the strip to know of the little-known Dilbert character. ;)
Easter egg away my friend, but remember thy audience!
#fuckbeta #iamslashdot #dicemustdie
There is no right time or place to add an easter egg.
There is only the question of whether you have the cojones to do it.
When information is power, privacy is freedom.
These make for great legends, but as much as I hate to admit it, I've gotten very serious about my work. Easter eggs are not generally appreciated by the Powers That Be, or by clients paying big cash for a product. My personal reputation, and producing a quality product have become important to me.
There's also the fact that that more code == more bugs. You can't get around that. Why open up a professional product and your reputation as a developer by making it more likely that you'll screw up?
I can see certain exceptions to this - for instance, games with easter eggs (approved, of course) can add to the charm of a product. An easter in egg in Quicken would be less cool.
This is the voice of World Control. I bring you Peace.
Your name should be all over the code you write... In the comments/remarks as defined by whatever language you're using.
Short answer: If Google can do it, then why can't you?
But about the Subject... There was a discussion about "moral" vs. "ethical". Here is a case that might help answer the question of "what is the difference"?
Adding an easter egg to your product, one that doesn't add value to the product, could be spending company resources, and getting paid, to do something that was never your job. So, it's not ethical.
But to say it's not moral? I don't think anyone would go that far.
I do not respond to cowards. Especially anonymous ones.
The best easter egg is pressing Ctrl-Alt-Del to log in, which still eludes many computer users...
I personally see no issue with a personal touch as long as it is undetectable and actually functional; there really is not much of a point in a simple "I WAS HERE!" sort of message; perhaps something that extends or adds function to the software?
I briefly worked (back in high school) for my school's tech department (being more qualified then they were) on a few projects. One of the few rules I was explicitly reminded of was no additional functionality or 'easter egg' type things. Perhaps employers dislike anything useless, but I personally think if it will never be found and is enjoyable or helpful, why not?
One of Microsoft's head programmers tried a little stunt like the one you're suggesting. It cost him his career... his dignity... and if the suicide note was of any indication, even his life.
His name was Andrew B. Clippy, and his "personal touch" tore him asunder.
You should add elaborate easter eggs only, if you are 100 % sure there is nothing else you can do to improve the software, that is probably never. Save yourself some future grief by running more tests, going through the code or documentation or by fixing some of the bugs or "issues" that are undoubtedly still there somewhere to fix. Adding something like a dev team picture behing a key combination is cool, though, and hardly wastes any time.
You can program a complete flight simulator in two days?
Support my political activism on Patreon.
Anywhere i've worked we don't have time to finish the product much less add extra's.
If creating something fun isn't taking away from something else and it's somewhat professional i see no issue with this.
However, if your building the product for someone else i would find that seriously unprofessional.
I think it also matters if its a team deciding to do it or if it's just some rogue programmer inserting hidden code. The latter should get you fired or in serious truble no matter if it's harmless or not.
Eastereggs are the sign that a company is proud of its software. Add something in that only people who had heard of it and were looking for it would find. If people are looking for it, they probably arent the starch shirted old people who would be opposed to a little bit of humor at work.
My current employer once almost got sued over an easter egg. The product was crashing constantly and the customer discovered a "funny" error message the nasty way and reacted something like "what the f*ck do you guys think you're doing?!". So ever since then the whole thing is easter egg free.
(posted anonymously for obvious reasons)
I would say if it is done in unquestionable good taste it is OK - I have a friend who was nearly fired over a log message that contained profanity and was written to some obscure text file - a government official was randomly looking at files and found it and alerted his superiors - it was a BIG mess...did I mention this was on a major DoD weapons system.... It is not an Easter Egg but it certainly shows the pitfalls of "personalizing software"
I wouldn't put easter eggs in an initial release. The odds are fairly good that the software hasn't been fully tested in a production environment or by a user base like that which it was ultimately designed for.
Let the monkeys pound on your first release for a while then if it holds up like you expect it to, perhaps work in some easter eggs in the next release along with some bug fixes. Having easter eggs and unexpected bugs/flakiness in an initial release would be embarrassing, and call into question the seriousness of your coding. If your unquestionably confident in the quality of the product, then you don't need to bother asking if its alright - if you've nailed it, adding your own flair is cool and fun.
Overclockers
and i thought playing christmas music before thanksgiving was rude
A pic of the developement team would be neat.
Circumcision is child abuse.
I have programmed an in shop bar code scanner meant to display the price information to customers in the store to say "Hello Joost" for one particular of the shelve product. For those in the Netherlands it was at XL Paris a shop with a lot of perfumes and stuff. I never ever heard about it from any manager, but have shown a number of friends and my girl friend the "Hello Joost". As far as I know they still use the same bar code scanners, but I am not sure whether my code is still in.
Do you add Easter Eggs to the software that is produced at the office?
No. Period. End-Of-Statement. Even if I worked for a game studio (and I used to) I wouldn't do that. It's thoroughly unprofessional.
The higher the technology, the sharper that two-edged sword.
I wouldn't and do not. I can't see any real need for it and it is simply something else that may go wrong and hurt something.
Yes, we like to think we can do all this totally 100% orthogonal and have it just be "fun" - but we all also know how well that works in practice in software products we have purchased/used. I'm certain that programmer thought it would be harmless, cute, and he was more than good enough to put it in there.
Of course, if you have a good QA department and said easter egg goes through that process too then that is also another story - would you really want *any* un-tested code in critical software even if it only pops up a smiley face? You always will get some - code is too complex to be other wise - but I would generally avoid intentionally untested code and I doubt anyplace is going to be happy to spend money testing your easter eggs.
If I want to personally sign things I do so in the comments. While most of mine are direct and to the point there is generally some humor in them and personal touches. It is one place I feel fairly confident that it will not hurt anything else and the reality is that this is the only place anyone is really going to have any idea that the easter egg is actually yours.
Now, in some products (say entertainment products) I think easter eggs should be a near requirement. However for working code I do not want them in there on either things I produce or things I purchase.
------- Sorry about the spelling, I suffer from two problems. Dyslexia makes it difficult to spell well, lazy makes it
Do what you want, it's your career. If you're posting the question on Slashdot, you obviously have doubts. Maybe you should listen to that little voice inside... or not.
My easter eggs cause my code to periodically crash the system for no apparent reason.
Not even to me!
I write firmware for medical devices. You want some easter eggs in your ECG?
Short answer: Yes i would
Long answer: I already have.. in a web-suite that i was the lead systems developer for, the finished product had this menu-system based on 3 x 3 iconds (9 total for those who don't know their arithmetics).. it was all javascript-based, and if you pressed the right CSS-boxes and icons in the correct order, the menu-icons disappeared, and you'd be left with an empty grid (3 x 3 open squares, still 9 total, in case you forgot already), where you could play tic-tac-toe against a simple AI written in javascript as well. That's what i got after the javascript-developers were finished with their part and just waiting for the backend to be completed. I told them "Be productive, amuse me.. easter eggs are always fun".. oh god i laughed when i saw the finished result.
this is probably the most boring sig in the world
How are your going to be able to explain NOT fixing a bug that got through in your code when you had time to include an un-spec'ed Easter egg?
This isn't about charm. This is about having to explain to management why a customer is unhappy.
My favorite easter eggs are usually found in the comments for source code. You get to see features that were left out, acknowledgments of unfixed bugs, and rude messages about other programmers in the project.
No way I'd sign my work at work.
It's not yours. You may have written it but you did it on the company dime. You don't own it, so don't go messing it up with your graffiti.
Besides, why would you want to in the first place? When it crashes (and it will eventually - most workplace projects are committee clusterfucks) do you really want your name on it?
Weaselmancer
rediculous.
----
But it didn't matter - we still shouldn't have done it. Why? Because it was utterly irresponsible. We didn't tell the customers about it, and that was unforgivable, ESPECIALLY in a network server. What would have happened if there had been a buffer overflow or other security bug in the Easter Egg code? How could we POSSIBLY explain to our customers that the reason we allowed a worm to propagate on the internet was because of the vanity of our deveopers? Why on EARTH would they trust us in the future?
Not to mention that we messed up. Just like the NT 3.1 Easter Egg, we had a bug in our Easter Egg, and we would send the Easter Egg out in response to protocol elements other than the intended ones. When I was discussing this topic with Raymond Chen, he pointed out that his real-world IMAP client hit this bug - and he was more than slightly upset at us for it.
----
Larry Osterman
<http://blogs.msdn.com/larryosterman/archive/2005/10/21/483608.aspx>
A humorous error message often brightens the day of the poor guy in operations who has to report back to the developer.
Blar.
Well, an easter egg is a feature, and it's more or less guaranteed that the feature you code at the last second in great haste is the one that will contain a bug capable of making the whole damned thing unusable if the user performs the right (wrong) action.
It might turn out that the obscure key combination you chose for your easter egg happens to be *right* near a commonly used key combination in some other part of the app (which you didn't work on... so you won't know).
And when that bug from hell is finally tracked down, and the code was checked in by you, and you have to explain to your CEO that it was an *easter egg*....
On the other hand, the idea has appeal... we're stupid that way, aren't way? Assuming the product still has some solid testing ahead of it (that will protect you a bit, though of course they won't likely test your secret feature), make sure your easter egg is easily debugged and difficult to trigger, make sure its implementation doesn't involve changing any important or delicate code, and make sure it's easy to remove cleanly and simply (and if you find it's not going to be complete enough to be amusing in time, you can pull the plug easily).
Have fun!
... and I have... :)
As long as it's not some insanely time consuming thing that causes bugs or complexity in the "public" parts of the program, I don't see a problem with it. Gotta blow off steam somehow...
Hexy - a strategy game for iPhone/iPod Touch
I used to be the lead programmer for a Big Company (tm). We'd just completed a several year project to build and roll out an in-house ERP system. It was mid-October.
I decided we needed a little fun break. I whipped up a quick piece of code that recolored all the application screens in orange and black. Through it on the update server.
When everyone logged in on Halloween, they were greeted with orange and black screens. Everybody laughed. Even the PHB thought it was pretty funny.
If your work is so serious that you can't have a little fun, it's probably time to find a new job.
Juveniles shouldn't work on products. . .
I normally put one in that if you hold down CTRL and click a certain area of the screen it'll say something like "Programmed by x, y and z". Just so I know I'll always have a little bit of me in there.
You mean the easter egg that never bills my calls or logs the CDRs?
Perhaps I did, and if I did it'd have been done so well that nobody will have noticed it for years. ;)
It's only an easter egg for true geeks, but I used this value as an encryption seed:
Hexdumping the executable shows:
Since it's the file encryption seed, nobody can ever change it without destroying the program's ability to decrypt old files!
cowsay "never"
During a large software product (4 years to completion) there had been a major disagreement about 3 years in. PHB vs programmers. Several programmers walked for what I considered legitimate grievances. For those of us there at the end, the PHB informed us that only those who saw the project through to completion would receive recognition. (Ie. credit.) Long story short, in this major piece of software used by government organizations in several countries, if you go to a certain place and do a certain thing, you get a list of everyone who worked on the software at any point during the development. It was tricky to hide (the PHB know how to grep the source) but hiding encrypted data and a decrypter wasn't too hard. ;) This was several years ago and AFAIK, it's not only in the first version, it's in the newest release.
I don't allow caveman art in my company's software. I don't even allow programmer's login-ID in the code but it is usually present in CM history. For one, code is written by one, but maintained by many. You either want to have everyone's name on there to be fair or no one's. I absolutely hate people writing their names in big bold letters on the front page of the document or documenting "Author: XXX" in the software when all they may have done is just to create the file and add the first two lines of code (out of a thousand). Other "non-author" programmers feel awkward to remove names even when their contributions may be substantial and so I make it a rule not to allow names. For security reasons, I simply do not allow any signature.
Yes = fired
No = !fired
think about it
I say don't drink and drive, you might spill your drink. Before you get behind the wheel just stop and think.
I always loved finding them in software
but if you are proud of what you have achieved, go ahead, it is a human right. I did it a couple of times when it seemed appropriate, and it was never a problem. If you are in a position where you are responsible for creating the system, it is just your decision.
If you need a rational argument for doing it: It might make the team more proud of the product, more productive for future releases, projects or products. A company is about people, and it is a people issue.
And when even weapon designers can put easter eggs into missiles, I can't imagine anything to be too serious to pull it off; a product just may be too boring or suck too much to deserve an easter egg.
An easter egg is just a sign that the people who made the product did care about it, and are proud of it. An easter egg is like a medal or decoration for the product.
p.
Without order, nothing can exist. Without chaos, nothing can be created.
"The only way to win is not to play the game." That old movie line is relevant to the askslashdot article too.
I was enjoying Easter Eggs in m$ excel by playing doom, I like see it in google reader. So I like to see personal the Autor's messages in general and would embedded it myself too. But I would be scared to see it in an Internet banking application, because they have so many developers in there, they keep changing and nobody knows how it works.
I hate to ruin your fun, but maybe instead of thinking about "easter eggs", you should try fixing your broken development process.
You shouldn't be able to sneak code into a project. Certainly not one that's almost done. No code reviews == fail.
This was years ago - one of the first thing the game did was ask you what your name was.
If you entered "colt forty five", then the mouse pointer would turn into a target, and you could shoot the characters on the screen when you clicked.
The same thing happened if you typed in "uzi nine mm" - except you could hold the mouse down for more action.
As expected, no-one noticed.
I worked in forth and cpm almost 30 years ago ...
we did it back then too .
save a copy and pass it on to your children.
Do you spit on the onion rings before you serve the burgers?
I'm going to side with the professionals here (and those are not Microsofties and their stupid flight-sims):
Leave the smart-ass thingies for good code and decent documentation. When the project's done, wrap it up, check the patches in, write documentary and go on to the next project. Don't waste time on funny shit.
Jeff Atwood was right when quoting "the best code is no code at all".
Leave the funny eggs for your MySpace website.
I once wrote a simple applet that displayed the temperature data as presented by an external sensor...
...but it also had an entire flight simulator and a pre-9-11 3D map of the state of New York... with King Kong on the Empire State Building.
I added a Mario pic to one of my web apps. If you log onto the site using a Wii w/the Opera browser, he shows-up.
Don't do it! If you have something very subtle and innocuous... get permission first. Or better yet, ask your management team for a bonus for getting the product out there, secure, on time, and under budget :)
Back in the mid 80's (the dark days of DOS) I had a habit of looking through executable code with the Norton hex editor. One day I came across the string "Nosey, aren't you." I thought it was pretty funny. In terms of the code I write, sometimes just something cute in the comments. Once when looping through some records I put a comment "these aren't the recORDIDS you're looking for, move along!" Probably nobody got a chuckle but me...
Not silly one-liners, mind you. I mean whole paragraphs of stories, ASCII art, or humorous meta-code.
I've done exactly that once in a while. The audience, of course, is fellow programmers who maintain the code for years after you've left... this allows you to target satisfyingly subtle or complex fun to those who are more likely to enjoy it.
My all-time favorite? An ASCII art version of the front cover to Hitchiker's Guide to the Galaxy.
Reader's exercise: what would be appropriate in front of Duff's Device?
This signature intentionally left unblank.
It sounds like you shouldn't do it, at least in this particular case. You say that "the software is quite professional," which makes it sound inappropriate. When you work on a fun product whose target audience would appreciate such things, you'll already know that Easter Eggs are fine.
Pass for now, and perhaps look for more fun projects in the future.
Be very careful.
Some clients (like financial firms and governments) have strict InfoSec policies that frown upon Easter Eggs and other intentionally "unknown" bits of code. To them, Easter Eggs demonstrate the vendor's lack of control against unauthorized and malicious changes to the product.
When these clients find the Easter Egg (and they will find it), they will threaten to walk away from your products unless your company makes a sacrificial offering by terminating the "rouge" employee.
- Posted anonymously for obvious reasons.
How about inserting compiler directives so that if the time zone during the build is detected to have changed by about 12 hours, all text boxes are immediately translated to Hindi or pidgin Chinese? But only in the release build and only after detecting the time zone has returned to within Eastern to West Coast time zones after deployment.
putting the 'B' in LGBTQ+
A long time ago. Dispatch system on a 16-bit GA16-440 "JumboGA". It didn't have much (32kw of ferrite core memory) but it did have a 4 digit hex display on the machine console. On alternate Wednesdays at 3am I had it display "FEED FACE DEAD FOOD DEDO DODO CACA" for 5 minutes then stop. In FORTRAN. Hey, I was young.
Do not mock my vision of impractical footwear
As was mentioned before, it's only polite to ask for permission. Having worked on software teams and managing and even owning a company that produced custom software, I would not have been pleased at all if one of my staff had added something superfluous to the code without permission. There is also the other issue. If you have time to add an easter egg and it comes about that you failed to do something else (like fix bugs), it would make me wonder what other nonproductive undertakings you are/have been involved with on company time.
At the last company I worked at (working on a proprietary IDE), we put in an easter egg that had a random chance every time the app was launched on April 1st to start with an alternate splash screen. We had a few alternate splash screens that were pretty funny... although these days the "All your base" reference of one particular one is probably lost on a lot of folks. Thankfully the rubber chicken is universal.
These days though it's next to impossible for me to do something like this, as I work on open source full time. Everyone can see the code I check in. The IP policies are pretty strict too, so the type of creative photoshopping shenanigans we used to pull are definitely a no go.
Not that I was any more in the clear when I did this type of thing at my previous employer either. It was just much harder for the gag to be found (no source), and even harder for me to be blamed, as no one without access to the source repository would be able to track the offending checkins.
As someone who does this for a living, and who values the performance and correctness of the applications I use, I find Easter Eggs sort of annoying. If it takes you 10 minutes to add the easter egg then that's 10 minutes I'd rather you have spent writing a unit test, fixing a bug or optimizing some routine.
I added a mystery button at the bottom left of http://www.wolfire.com/overgrowth using some concept art from the video game. It has actually gotten quite a bit of good feedback. :)
I also added one at a startup I used to work at, but unfortunately it was removed.
I've been in the same situation...but a few suggestions:
1) If you do it, do it on your own time. Your boss isn't paying you to add a "personal touch" to the software.
2) Inform your boss before doing it. If they say no, don't.
3) Inform your testers before doing it. If they say no, don't
4) Make it simple, secure and easy to test.
5) Test it.
6) Make it easy to remove.
7) Document how to remove it.
As much as you may love the code, it isn't yours. If the software is reasonably useful and well-written, it will likely stay at that company longer that you. 12 years down the line, the company shouldn't have to find out that the code doesn't compile in "JavaBuilder.NET++ 2020" due to an easter egg that uses an API call from some defunct OS company.
Teh Boss.
[Pruneau
I remember that I once found a small flight simulator in Excel 97 ...
This may be what he is referring to.
Just a thought.
The problem with jokes or humorous variable names in code is that often - if not most of the time - someone is looking at the code because they're trying to track down a problem. People trying to find the source of a problem are usually a bit, well, stressed. Stressed people are not in a mood to read your jokes.
Save the humour for the break room.
telnet slashdot.org 80
Take a look at the headers :)
The ones in MySQL are much harder to find.
You can't grep a dead tree.
A VERY well known accounting package displays a short lived message box each year if you happen to start it up at the time (accurate to the minute) of my birth.
The function that displays it is so god-damned complicated, nobody dares touch it (I didn't write it). It was written by a guy who never learned about functional programming, you know, the original single function application. When I last looked at it (back in about 2003) it was about 17,000 lines long, with case statements nested about 6 or 8 deep, fall-throughs, and gotos, and about 3 comments. I found only one single bug in that function (which happened to be on my birthday), so the guy who wrote it new was very good indeed.
Ask your accounting department, they might know my name.
I must have been programming for too long. The last thing I'd want to do is muck about putting in an Easter Egg (hardly a professional thing to do anyway). I just want to code the code ou the door and on to the next project biting at its heels.
I want a list of atrocities done in your name - Recoil
Do not. You may have a sense of humor, but your pointy haired boss probably does not.
Someone tried this stunt where I work, about a week before he quit. He slipped in a Rick Roll easter egg into one of the administration screens of our software. Unfortunately, it popped up during a client demo - and it lost us the client. Company sued him, he lost, the settlement was around $100,000 iirc.
That's not funny.
I was working on a Web App that has date fields. There is an example of how to format the date next to it and I put my wedding day. The spec did not call for any certain date. I can look at it years from now and see where I left my mark.
I do not get any more adventurous then that. Once were were going to make a database table called WEGAS, which stood for Who Else Gives A Shit, it was a list of people who wanted to be notified when the issue/ticket was updated. We chickened out and called it Notification.
Also if you have a small shop, then it is fun, but in a larger shop it is usually frowned upon. then you also may have to explain it in a code review. So just stay light like I do.
Once I wrote in the document about paging I put "Example page 7 of 9". to me this is an Easter egg. I could have but page 3 or 10, but that means nothing, and 7 of 9 works just as well.
The names and photos of friends somehow always make it into role-based examples. As a Farker, I've also managed to get Squirrel Nuts, Huffer and Guy Haha into my documentation.
Don't shake the jelly
Reasons to not do it:
By now you've probably guessed that I also think it's seriously stupid and childish thing to do. On par with spraying graffitti on a building you've just help construct.
If you've really got a few days left, use them to double and triple check everything you've done. Particularly the code constructs that can't easily be tested. The sorts of things that lead to embarassing crashes and hacker exploits.
Take some god'dam pride in your work.
-- Butlerian Jihad NOW!
I hid a secret dialog box in an application I did for a call-center project my employer was working on back in 1999. The software was to manage a call center of untrained temps calling various suppliers of a Very Large Company surveying their Y2K compliance. We were a small company run by an ex-employee (laid off and rehired as a consultant) of the Very Large Company. I hid the egg just as a joke, not really thinking about it. To hide it from the other programmer on the project, I obfuscated the code that created the egg and hid it across several modules. Anyway, about two weeks before we were to ship (and get paid), our salesguy decided to give the customer a preview of the software, which was feature complete and in final testing. He decided that rather than ask me for a demo version, it would be faster to simply send the customer a copy of the folder on my desktop. (This is when I learned to be paranoid about locking my screen when unattended!) All of a sudden the Very Large Company called us and told us they no longer needed us or our software, as they had "repurposed a software used for a previous project". The salesguy threw a fit, talking about how he had "gone above and beyond" to make the sale and "even done a demo". When asked about the demo, he admitted what he had done.
So a week later, my boss and I paid the Very Large Company a visit to meet with the manager who was our contact. He and his boss very proudly showed us his call floor with about 60 people working at workstations running a very familiar-looking piece of software, talking about how they had this "just lying around" and "forgot they had it" and were "really very sorry".
So I asked if I could see the "software that beat us". Before he could say anything, his boss said "Sure, go ahead!", and he didn't argue. So I sat down at a workstation, opened the about box on the software, and noted that the text strings had changed but not the layout. So I clicked where my hidden button should be, and sure enough, there was the hidden dialog box with my name, the date, the company's name, and a large picture of Sailor Moon and Chibi-Usa.
My boss was livid. The manager turned white as a sheet. All of a sudden he didn't want to talk to us anymore! He called security to show us to the door, but the damage was done. Both he and his boss had seen what I did. His boss was not pleased. Apparently he had claimed "finding" the software as an expense. After some discussion between them and our lawyer, it was decided that in exchange for us not suing them and not telling anyone about it they would pay us four times our original contract value. The manager responsible was fired by the Very Large Company, and we fired the salesguy for exposing the company to such liability.
So yes, absolutely, I hide some sort of identifying mark in everything I do. You never know when you might need to prove you worked on something.
I've always loved shoving fun stuff into our software. Sadly, the users will never see (most) of them.
My favorite was when I wrote a song for one of the scripts, and echo'd the lyrics when you called a specific function.
I'd be happy if the easter eggs included:
A) The ability to disable omniscence.
B) A proper test suite runnable by users.
C) Reconfigurable keyboard bindings.
D) A smaller storage footprint.
Personally, I don't care to deal with a full video of the author doing a monkey dance in what should be a less than one mb program.
If programmers aren't adding the above, they don't really have the time for ego stroking.
I wish I could worship gold coins, not bytes on a bank's computer. At least gold looks cool, or the GIF did.
I think easter eggs connect the user to the producer. I know every time I've found one, its added kind of a memerable charm, that the producer had.
Makes me think of the totaka hidden song in games.
Most people aren't thought about after they're gone. "I wonder where Rob got the plutonium" is better than most get.
And then OS X copied it and changed the color to black. Awesome fun.
Um, no, OSX does it with an animation of a spinning multi-colored disc.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
Am I the only one who lives in a land where "moral" and "ethical" mean the same thing?
Grr! Arg!
Of course you should, you're an artist. Mind you, I'm no artist and even less am I a geek, but I work with both and know them well. Especially in the corporate world, you have to do something to celebrate your uniqueness, because the company won't. I recently finished writing a large and intensely detailed user manual for a content management app, and couldn't even put my own name on it (I'm a consultant, so a full-time employee's sig had to be on the title page). So here's my general rule: always err on the side of autonomy.
Development is programmable; Discovery is not programmable. (Fuller)
In a government statistical setting this name 'LizDicks' was sugested to identify the variable that counted the number of couples who had divorced and married each other several times. You probably have to be very old to get the joke.
Undetectable Steganography? Yep, there's an app fo
it's a (ugly) and true story. coded a little easter egg into an online shop. while coding together with a huge team there where two guys who did it. one of them lost his job. it's me. btw hi everyone i am the new on on /.
force
In college (>10 years ago) I had an internship writing hand scanner software for a large alcoholic beverage distributor. Since it had to be functional with all their products I made it so that if an obscure 7oz. drink was scanned the operator had to play a hardcoded game of ascii Space Invaders to continue. In the end I chickened out and took out the conditional, but I'm pretty sure I left the actual game in the source code. I've always wondered if whoever took over after I left noticed it. I wish I'd have left it in, or at least a short demo, as an Easter Egg.
I just let iTunes update my iPod touch, and it bricked it. Checking the system log when I connect it, I get the message "AMDeviceConnect: This is not the droid you're looking for. Move along, move along."
Now, that's not all that funny when you've got a $300 brick sitting on your desk. Fortunately, a little quality time with Google and I found the not-documented hardware reset sequence, but it points out something important. Don't be funny when there is ANY chance a user might see you being funny in an un-funny situation.
My attitude towards Easter Eggs is that they're kind of like signing the software with your name. No software is perfect, but it's OK to say that "yes, I'm proud of some of the stuff I put in here." Just use your common sense, and one of thing that ought to be common sense is that you should not make light of any difficulties users might encounter; keep it well hidden and out of the way of any kind of real activity or troubleshooting, and especially don't get clever with diagnostic messages.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
... in the ATC software written for the FAA. All you need to do is line up two 747s on a collision course and it plays a randomly selected "Looks like I picked the wrong week to quit ..." clip from Airplane!.
Have gnu, will travel.
You've fixed all the bugs, written all your test cases, fixed all the edge cases. And reviewed and fixed all the code related to yours. And since Im sure you've not done that, no easter eggs for you.
I added a version of Pong to a web-based reporting application I wrote for one of our big customers at work... I don't think anyone apart from me knows it's there :) It's pretty well hidden.
There is one in just about every piece of code I get near. It might be as simple as echoing a 'kilroy was here' line on the right input, or as complicated as 'convince the AI to move through these coordinates, starting on a step that is a multiple of 23 and finishing before 42, and they will then do a dance.'
Sometimes, you just have to kill time, others you just want some recognition in a big, flat projects. Working at a school, though, lets me get away with more of these than others might.
I wouldn't go so far as to put in an Easter egg that actually does something, but I'd definiltly "sign" my work. Maybe use "42" as a seed value, make an error message that just happens to be a haiku, something really subtle like that. Basically, the kind if thing that, if it gets noticed, can't possibly get you into any trouble.
Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
My dad was in the habit of putting easter eggs in the excess space of the ROM in the test&measurement equipment he designed, but he felt that the only reasonable way of doing it was to make the surprise completely unreachable from a functioning instrument, and only accessible before boot. (As in, you held down a series of buttons and hit the power button, and it'd come up and do its surprise thing and then shut down or jump to the regular boot sequence.) All the code was in the very top address space and there weren't any jumps that went there except for the power-up one. That way he could make sure that the code never ran or got involved in normal operation.
Some of his easter eggs later became demos for the salesmen because they showed off the hardware capabilities so beautifully.
I do hardware design, and put some graphics into everything I do, whether it's a picture of a bicycle or mountains.
Nostalgia's not what it used to be.
Since the cost might be losing your job, it has better be pretty important to have that Easter Egg
If you feel that you've completed the coding project ahead of schedule; you are absolutely wrong. Remember Murphy's Law: "Anything that can, will go wrong in the worst possible way and time". Instead I want you to spend that extra time on regression testing and debugging instead of adding unneeded code to this project.
Mod me up/Mod me down: I wont frown as I've no crown
I once placed a log entry that read:
"Houston, we have a problem"
I just placed it buried after several conditions that were supposed to never occur. Well, they did happen and we had a client call in and ask us what the error message meant.
We all had a good laugh and such an specific message made the debugging very easy. But i admit it wasn't the best idea to do so.
I permit my creative/cantankerous side to shine not in features, but rather in the code itself.
iambic hexameter/haiku are excellent forms for one's comments.
common variable names I use: dog, rover, hunter, icarus, target, bullseye, dogcrap, hexy,binbinbin, whatsthisdo, nestme, layme, boilethover
I work for a company that makes learning games for kids. In one of the more recent titles, I introduced "squirrel mode". If you type in the word 'nutz' then all of the speaking parts get their playback frequency doubled, and a message "Squirrel Mode Activated" is displayed. We make professional software too, but even if someone were to find this, the easter egg is harmless so don't worry about it.
and not only me. there's a couple of easter eggs in our products. you can configure certain aspects of our server software via a telnet interface. typing help shows you the available commands. what it doesn't show is the lolcode aliases for all those command. :)
so you can either disconnect from the interface using "close" or "kthxbye"
for a demo, I did, I made a small movie thanking all participants, which was played when entering certain digits (a combination of our company name and the name of a hardware partner company).
quite funny and everyone enjoyed it.
No.
Now to wait the requisite seconds before hitting submit..
Who is general failure, and why is he reading my hard drive?
When I worked for small companies, when I was the only developer on the project, I often put my name and the names of the designers somewhere in the system. If you passed a parameter back to the server it would list our names. And when I worked for a systems automation company to help the poor operators pass the time I even added some games. They were text based (back before windows was big and the only way to draw 'windows' was to use IBM line characters) but they were fun. I added solitaire, a version of pacman, and a version of centipede where the characters moved back and forth across our company splash screen. You could even shoot out the logo and other text on the screen. But I wouldn't recommend doing this if you work for a big company where other people will see your code. My old boss was demonstrating some code to a customer and when he opened up a file there were obscenities left in some of the comments by another developer. The customer was NOT pleased.
If you for some reason want to add easter eggs, please be careful. They tend to extend the attack surface on the system, which is handy for malicious users.
I've added a couple small things in some of my programs. I needed to save some random filetype that ONLY that program would need- so they're now .bkm files, which happen to be my initials :)
http://www.folklore.org/StoryView.py?story=Stolen_From_Apple.txt
Do you mean something like having my name flown aboard the Space Shuttle in the form of ASCII characters? It was about as close as I would ever get to being in space and no, it was not in a memory location that could have ever been executed.
...and with the other guy who does the code with me, we agreed to include "disco mode". We're still thinking what set of conditions to pick to trigger it.
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
I don't know that I'd recommend this in another setting, but I was a software developer for an in-house database app that would never be used by anyone outside our company. I wrote a search engine that was used *very* heavily by most of the staff. It had a simple easter egg built in: when it noticed that the current date was within 30 days of my birthday, it would randomly (once every 100 or so instances) display a "XX shopping days left until [cafn8ed's] birthday".
No harm done, one extra mouse click to dismiss the popup, and everyone at my workplace knew my birthday by heart, even several years after I left.
Coffee is my drug of choice.
I have yet to put a classic Easter Egg into my professional programs, but I chalk that up to the fact that my software is used to test military hardware. My management is relatively cool, as are 90% of my customer base. But if a senior officer was ever at a console when an Easter Egg was activated, I would get in trouble.
So, I add Easter Eggs by adding quirky features. For example, when you need to analyze data points, you can have a script tell the software to only analyze odd or even data points. There are legitimate reasons for this, so "odd" and "even" are in there. But they can also type in "Fibonacci" or "Primes" and they get those points as well. In that manner, I have fun things in there that could be called Easter Eggs, but I can always explain them if people find out about them.
... could be spending company resources, and getting paid, to do something that was never your job.
Get fucking serious -- your boss wastes way more than that every time he does something that upsets someone and leads to an hour of bitching distributed through a day.
And notice the word "could". It's one of the most poisonous words in American society these days. If you disapprove of anything someone does, all you have to do to set the corporate types/school board/police/other namby-pambies into a undies-bunching, asshole-pursing fury is to say of anything that "it could ...", then follow by positing any hare-brained, unrealistic-to-impossible, catastrophic scenario you can dream up. Instant win!!! At least among the least-educated, most-timorous among us.
"Oh noes!!! If you say that in public, someone might think of it while driving, start laughing and, with his attention diverted from the road, he just might crash into a van-load of pregnant nuns. Oh Jeebus!!!
Once upon a time I wrote an accounting and office administration application using a DOS product called DataEase. Shortly before I left for bigger and better things I rigged it so once a year the bottom border on the primary menu screen would be replaced with a message in HEX wishing me a happy birthday.
If the g'vt kept the data on you that google does you'd better believe you'd be calling it "doing evil"
I was once in charge of some important software for one of the top 3 software companies. When we went into code freeze and I took a couple of days off my team had too much time on their hands and inserted some easter egg code. I went ballistic when I found out. It was inevitable that I would find out since I diffed the code regularly to make sure nothing had changed. Many argued that the code was "guaranteed harmless". But a seasoned pro would know better. There is no "harmless" code changes after code freeze. When QA has covered as much code as possible and verified a given build shifting even a single byte COULD cause a new problem to surface. So although I enjoy a good easter egg and I am certainly vain enough about wanting credit for the major products I've shipped, I can't condone the addition of an easter egg late in the lifecycle. If you really want an easter egg, build it early in the lifecycle so the code is validated with the "feature" in place. Of course, if you have enough time to design and test a good easter egg, then you have time enough to add another feature that the marketing department would just LOVE to have! So bottom line is easter eggs signal to me a team with misplaced priorities.
I'm on this project right now...
http://www.pharmaceuticalcommerce.com/frontEnd/main.php?idSeccion=972
I'm the technical lead for a large chunk of this project and if I saw an Easter Egg in a check-in, there would be a closed door meeting with a programmer. I guess if you write games it might be considered acceptable.
David Reich and myself were responsible for the easter egg in OS/2 2.0, so yes. :D
I built a CMS for work that switches to swashbuckling theme for talk like a pirate day, so yeah, I don't see anything wrong with that.
Saying your "phone ran out of batteries" is like saying your "car ran out of gas tanks".
I could just cover everything under "invalid frame".
Instead, outside of "invalid CRC" I report whatever info I can extract from the frame, in form of errors and warnings.
"Device %d (type %s) reports its lock-out line is up. This kind of devices has no lock-out lines."
"Device %d reported temperature below zero kelvin" (rated -40C ~ 80C)
"Device %d reported temperature above temperature sensor meltdown point."
"Device %d reports faulty channel %d which it does not possess."
"Timestamp (%s) predates manufacture date (%s)."
"Device %d confirmed successful end of transmission which didn't occur."
"Device %d exits emergency mode %d which it never entered."
"Device %d (type %d) reports firmware version %d.%d%c This firmware version is characteristic to devices type %d, which this device is not."
"the IP address %s has too many dots in it." (...and I had told that guy to send it to me in unsigned char[4]).
"Device %d, which doesn't exist, sent a message."
"Device %d successfully leaves nonexistent emergency mode %d."
"Device %d claims its power supply voltage is 0V".
"Device %d claims to be the CPU. I am the CPU."
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
Nine times out of ten, nothing bad will happen. However, getting fired for a childish stunt is not a good career move. Don't do it.
That's an easy choice. Disco mode needs to start when a car made in 1970's is waiting at the lights!
Car analogies break down.
"Should we developers sign our creations?"
You sign what you've created on the job by endorsing the back of your paycheck. You created it for the company--it is theirs. This is the same as an artist that creates a logo for a company. The logo generally goes unsigned. This isn't "selling out" this is earning a living doing what you like.
switch (currDate){
case xmas:
banner = "Why are you working on christmas"
break;
case easter:
banner = "Happy chocolate fest"
break;
case (year + "0713"):
banner = "Celebrate the birthday of your future lord and master"
break;
case (year + "0101"):
banner = "Happy New Year!"
break;
}
Yay me!
If you're developing software for a government agency, a bank, The Church of Scientology or some other ultra-sensitive place, then an Easter Egg probably isn't the brightest idea. Otherwise, go right ahead and sign your creation, provided that it's (a) non-offensive (b) non-intrusive and (c) as loosely coupled to the rest of the app as possible. I've added Easter Eggs to most of my software (ex: type "FeedDemon easter egg" into FeedDemon's address bar), and years later I've always been glad I did it.
"Should we developers sign our creations?"
You do this by endorsing the back of your paycheck. You created the work on assignment for the company--it belongs to them. This is no different that an artist that creates a corporate logo or brand image. Such work is rarely signed. This isn't "selling out". This is earning a living doing what you are good at and enjoy.
I hid the lyrics to the theme song to the Dukes of Hazzard in some corporate software once. It is probably still there. I don't work there now, haven't for a long time, but I bet that if you did work there today, if you were to enter just the right keystrokes and selected an otherwise inconspicuous white area of the screen, they would probably still shine with pride. Why those lyrics? Why not? Ha!? Harmless, but my own little sig, I guess :)
The Palm OS is notorious for Easter Eggs... Just try a quick google search.
I once wrote a corporate intranet - and if you double-clicked in just the right place (a 1x1px div), you got an alert saying "This app developed by XYZ"... ;)
i was here
If I, as a customer, find you've been wasting my money ("You're _charging_ me for the time spent on this shit?") or time ("Is _this_ why you're so late in delivering?") on an easter egg, I will have your head.
If your company puts out OTS software, whatever. Your call. If you write to contract, don't.
I work for a printer company. My brother gave me an idea for an easter egg to bury in the high-level stuff we make. Specifically, his exact quote was "If my MP3 player has a Shuffle mode, my printer should, too".
Collate: On | Off | Shuffle
Shame it's not coded up, and I wouldn't put it in anyway. But, subtle and possibly absurd. That's the way easter eggs should be.
Demanding constant attention will only lead to attention.
...I've just finished the development of a large software product, and I have a couple of days left....
That is impossible. SW is never finished!!! Never ever. Or is it just jealousy talking ;)
:: There is no light at the end of a tunnel. There is a tunnel after a tunnel : Thom Y.
Everyone of my programs for work has a little easter egg- from different splash screens for April 1st and a few select birthdays to a game of breakout hidden in the the help files.
It my way of saying that I've busted my ass getting the program done, now I want to have a little fun with it.
My prior boss was cool with it, as where the users when they found the easter egg, but I keep it on the low with my new boss.
III.IIVIVIXIIVIVIIIVVIIIIXVIIIXIIIIIIIIVIIIIVVIII
Eastereggs are a great tradition, but can easily be abused. If it's all your own program, well, who can stop you? If there is a team, and they didn't agree to it, then things get sticky.
Good advice, if you make one, keep it tasteful.
I've seen names, ascii art, and even poetry hidden in software for eastereggs. Many of which you can't even find without a hex editor.
If you are making the egg for anyone, a secret action or key combination is fine. But if it's for authentication, or the programming equivalent of an artists signature, keep it in the code where (l)users will never see it.
All the Easter Eggs in the Apple Newton really used to bug me. I didn't mind all the little jokes, but I did mind that more effort seemed to go into dreaming up those jokes then went into swatting bugs. When a product doesn't know that punctuation isn't part of a word's spelling, but does know where Elvis was last seen, you wonder where the developer's priorities are.
When an artist is commissioned to paint, does he neglect to sign his work? Does his mark mar the work?
No; an artist knows where to sign.
how about an impatient pedestrian continually tapping the button. allow the "hand" to appear for ~10 seconds - then go disco
from 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
to 45 2F 6E 40 3C DF 10 71 4E 41 DF AA 25 7D 31 3F
I was saddened when the "Printer Failure, is it on on fire?" error message was removed form the standard Linux printer driver.
Well, the guy who put in that really cool spy hunter demo in Excel a couple of years back was the same guy who wrote some weird 24-to-8-bit color reduction algorithm that wasn't from any text I'd ever seen. It did a couple hundred colors OK, but anything with thousands of colors, it took forever.
We all thought he was so cool because he did that spy hunter game in so little memory. Just don't try to generate GIFs from graphs in Excel with lots of colors.
The easter egg was removed in the next version, and the 24->8 algorithm was replaced too.
About 10 years ago I worked for a company that made FM tuner cards for PCs. A few weeks before the release of v2 of the tuner application we found out that our manager was a hollow earther. So, being evil young punks, we added an easter egg that would replace the UI of the app with an animation of the earth rotating to reveal it was hollow with a city inside. A small UFO with a green alien would fly out of the city, spin around a couple of time then fly away. To access the easter egg you had to be tuned to 101.10, have the tuner muted and press ctrl-alt-leftshift-f12. We giggled our fool heads off every time we saw it. To my knowledge nobody ever discovered it.
If I could program, I SURE would. I love to know about "EASTER EGGS" in software. Go for it...
you stinkin' six-digiter!
You're almost as bad as those pesky five-digiters!
Perl - $Just @when->$you ${thought} s/yn/tax/ &couldn\'t %get $worse;
This was all well and good until we had some sort of glitch on a sim under test and the customer's chief pilot managed to land through the runway and the entire cockpit view was filled with something like "Fuck off Dave!"
Management were not pleased!
I trust the developers learned their lesson and are using more politely-worded easter eggs when designing HAL?
I do motion graphics and compositing work freelance. On one of my jobs I did a shot that I hid my girlfriend's initials in. It was very small and you will probably never be able to tell it was there but I know.
I added an Easter egg to the system controller SW on the Sun E15K. We just added a new cli named showbus, and the temptation was too great. If you give it the -shortbus flag you get a simple animated credits. No one has ever noticed the code change, so its still there and shipping on all E12-25K's.
Don't think I could slip anything in anymore :(
Reminds me of the time that Developers at Viewpoint DataLabs in Orem UT created an 'inside joke' error message that got out back in 1998. The error was:
Obviously, when testing the software, as the product release date approached all the machines in the office had Directx installed. OOPS!
Good security is based upon reality and common sense. Common sense is a function of having common knowledge.
I once put an encrypted photo of my girlfriend in our corporate Standard Operating Environment image. Many thousands of PCs had her photo hidden quite deeply.
Thats like an Easter egg, right?
either that or they are a sign that the development team is too big and needs to either be given more work or downsized.
Even Steve Jobs approves of Easter Eggs:
http://www.folklore.org/StoryView.py?project=Macintosh&story=Mister_Macintosh.txt
In one of the last dev teams I was leading we got the idea to add an Easter egg mini-game to our product. We brought in a digital camera and took pictures of the whole team which I shrunk down and turned into tile backdrops for a game of X's & O's. We also recorded a few choice Wav's to play when the user selected a tile. It was playable from the Help / About screen via a click-able icon on the screen.
Some of the responses in this thread make me think a lot of the folks responding either don't do contract software development for a customer, don't work on any sort of mission critical software, or aren't terribly mature.
An easter egg is: a) extra code that could introduce a new bug (accidents happen, even in easter eggs - I've seen a screwed up easter egg crash a program and leave the machine locked up)
b) something that is not part of requirements and if caught during client code reviews or after installation, would put your employer in a complicated position since your spending time on such an unallocated task could basically be considered a form of fraud if the client is paying for your services
c) a sign of vanity - professionals do the job, do it well, and move on, not write silly-ass amateur crap just to amuse themselves and stroke their egos
d) something some other poor software engineer might have to fix or remove and they might not find so darn funny
A professional should take satisfaction in a job done well.
Do civil or mechanical engineers leave easter eggs? Do nurses? Do doctors? Grow the hell up... people bitch about software folks never being given the same respect as other engineering fields and it is the attitude of the average programmer that has a sizable part in explaining this.
Would you want your doctor leaving an easter egg? Would you want your dentist? Or would you find it funny if your phone dialed random numbers on some developers birthday? Or if your traffic light flashed all green every summer solstice? I think not.
I suspect the gulf here between those respondents who manage programmers and deal with clients or who work in any form of mission critical software or professional services and those who write shrink-wrapped software or less critical applications when it comes to easter eggs is probably sizable. All it takes is seeing a co-worker having his ass kicked because a manager had his chewed off by an angry client to understand that, in professional environments, this kind of stuff doesn't fly (and shouldn't).
You're not paid to be an artist. If you were, they'd cut one copy of your code and display it up in a museum. You're paid to implement requirements as defined by your employer and possibly your customer. When you aren't doing that, you're basically screwing the pooch and exploiting your employer. Some may feel justified doing this, but that's a crock. If you don't like the job, GTFO. If you do like the job, be a professional and leave the high-school hijinks behind.
(And yes, I've worked for 15 years in mission critical software for the police, the military, air navigation training systems, cell phone portals, VOIP and call processors, HR systems, and so on, so it does colour my view on easter eggs...)
-- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
Depends on the app and the target audience.
Virus scanning code for my email servers at work? Probably not.
A game I wrote (for publication or private dist)... most likley yes.
I also, once, wrote international customs shipping forms, that would take FoxBase database sales entries and generate the customs forms. The company I was working for was doing this, under contract, for the San Diego offices of ... a large japanese entertainment and electronics company. I snuck into each form a "meaningless code" at the bottom of every print out. I said it was a checksum of some backend data, that would change periodically, but that the probably wouldn't ever notice that fact.
It was actually a scramble of my birthday.
I think that's as close to an easter egg as I've ever actually written.
The Mac mail client Mailsmith changes the "new mail" alert to an "electrical discharge"-like sound on april 1st. Each year, this results in panicked people thinking there's something wrong with their power supply.
Years ago we wrote a lot of test code that would "screen scrape" our app's HTML. If there were significant differences, it would amongst other things open the retrieved HTML in a browser, for the developer's perusal.
So once we decided to pull a prank on Joe. I modified the HTTP screen scraper to:
if (hostname() == 'joescomputer'):
downloadURL = 'www.xxx-lotsa-pink.com'
else:
downloadURL = 'localhost:8080/ourApp'
Later that day Joe came storming in, white-faced, and softly announced: "I think we've been hacked or something. Someone's hosting a porn site on my development box!"
"Defect Injection". Yeah. That's what it was. A sophisticated QA technique, yes sir.
I have added Easter eggs to everything I've worked on.
I am now well an truly pointy haired and get disappointed that I have to encourage reluctant programmers to put in Easter Eggs most of the time.
We are not children, we are professionals. Easter eggs are OK for hobbyist projects, but if a customer or employer who is paying good money for it, he or she won't expect easter eggs in the finished product. I know that may sound boring to some, but c'mon! Grow up, be responsible.
Beauty is in the beholder of the eye.
We are just a good at decomposition especially if it is GNU/Linux based and has a Greek name.
Although I agree with the general gist of your post (not the tone mind you) this need to leave something personal in a major work is not a new thing.
Workers in cathedrals of all times always took a bit of time to leave personal marks, from signatures to most complex features (faces, figures, etc) to sign a piece of work well done.
Electronics Engineers nowadays make minuscule engravings in the circuits they design.
Civil Engineers and Architects very often leave an small sculpture, signature, aesthetic feature that is not in the specifications but that adds a final personal touch.
I can't imagine that a client paying for a service that is delivered in time and budget would object in the terms you are putting to a silly joke, but I tend to agree that in the case of software, unlike an added feature to a bridge or a building, a joke can always bring a system to its knees (even if it is coded carefully and cleanly, software is exponentially complex, so it is almost impossible to foresee all the possible conditions under which an Easter Egg could cause havoc).
IANAL but write like a drunk one.
If you think it would be accepted, seems like a fun idea. But I think I agree with some of the other people that keep it clean, and make sure that it doesn't affect security. Remember it's your reputation on the line if this Easter egg breaks the program.
In civilized countries only junkies and alcoholics don't eat or have a roof over their heads (if the US is civilized is open to discussion, they don't even have socialized health care).
If you live in Somalia, Ethiopia or Sudan then yeah, your are fucked if you lose your job, but an British, German or Japanese person worrying about going hungry or homeless is frankly ridiculous, I don't know about the US, but I did not see any shanty towns the few times I was there (although it seems some are goring outside some towns in Texas....)
IANAL but write like a drunk one.
Thus it is not like you can move bricks from one place to put them somewhere else to fill a hole.
Space Invaders code is so widespread now that I am sure implementing such prank would not take substantial amount of time from any proficient programmer anyway.
I will not even go into the moral authority of users when it comes to demanding things from developers doing a solid piece of work that is free and that has improved greatly in the last few years.
Gosh, life is so grim for some people out there ...
IANAL but write like a drunk one.
Think big. Think obfuscated. Think back door.
I've heard of easter eggs in MS products ('flight simulator' in excel), Borland products (in Delphi 5, starwars scroller), Lotus Notes (Monty Python team scroller), Apple ('stolen from apple' icon). I've read about of easter eggs on the layout of integrated circuits (DEC?). Just because there's an easter egg hidden somewhere, it doesn't make the software OR hardware company in question any less credible. Bad software (or hardware) does.
Visit http://ringbreak.dnd.utwente.nl/~mrjb/growingbettersoftware to download your free copy of the book
As a family doctor of several decades, I would use polka-dots pads any day. I have expertise, I also have reassuring humor.
A lot of the above arguments are about humor/humanity versus expertise. In my case, I have done both for years. If the always ringing phone is any indication, people think humor & expertise is a good combination.
When I refer my patients to assorted specialists, I often preface my recommendation with "he/she is a bit dull personally, but their expertise is good"
Remove humor, and you make the world a bit more drab. Security, safety, correctness are not affected by humor. Leave humor in, and there are more smiles in the world.
I worked for a rail company. For an intranet site I made the pull-down menu was a stylised train, with each 'carriage' being the menu option the use would click-on to trigger the pull-down. But, being into javascript as I was, I added an Easter egg such that, if the user clicked on the cab of the engine the train would start-up and accelerate off the edit of the screen, only to return with an added carriage proving a menu of company relevant specific web-links.
On a customer complaint system I developed the icon on the 'Query' button of the main screen would be replaced by an icon of a fish on 1st April. It might still be doing that for all I know....
Your Easter egg will use resources like memory space, storage space, execution cycles, which belong to the customer. The customer may have better use for those resources.
I have been all the way though this discussion, and if someone else has said this then I can't find it, so here goes...
The project manager ought to know what's going on. Indeed - if they were good, they ought to suggest it themselves. If people want to sign their work then they feel good about it and good about themselves. There is a list of names that come up when you log into PhotoShop. The engineers got to sign their names on the inside of the case mould in the first Apple computers. Other such easter eggs include pop-up portraits of the team when some unlikely combination of keys is pressed. I know it is silly, but code often seems like a sterile sequence of ones and zeros, and having your name or your face in it somehow does make a difference.
There is a greyer area of an easter egg that does something significant, and so might be a bug or a backdoor for an attack. If it is fun and its obscure, then the project manager will have to make a call. If you wrote it, you are bound to think it is cool. Hell, all my code is wicked cool, and I don't need anyone's opinion, so I should know. But I would still tell the manager.
On the other hand, if you are stuffing your own secret code into a commercial product without telling anyone, then you are on your own, mate. And if you were doing that on a project of mine, I would be deeply worried. . without something As long as it does not bloat the code significantly, and it does not open any backdoors, but it can make a lot of people feel good about what they do. or anything, but people how worked on each PhotoShop release comes uwant them to somewhow sign their names to their artwork
Trading systems certainly don't appear to be written with the degree of care that would be required to insure nothing like that gets through. In fact I'd have to say that your garden variety broker system isn't any better tested than any garden variety commercial application with a decent sized user base.
The difference is more at the level of business process. Lets say a system like that (or some component of banking software for that matter) DOES screw up. There are all kinds of checks and balances within the business process of the firm that would catch the vast majority of errors. That and whoever the firm/bank is doing business with will certainly notice! As in the story with the CBA doing a double withdrawal, it just isn't going to go unnoticed for very long.
It would be lovely if iron clad levels of reliability and security could be incorporated into software. Problem is it would dwarf the actual development cost of the product and might not even then actually make much difference in practice. Reliability and security testing is going to have to get a LOT cheaper before many development shops can do it thoroughly.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
Did the developer pay for the development or did the employer/customer? If the developer paid out of her own pocket, it's hers: she can produce as many eggs as desired; otherwise, she needs her tubes cut.
The software I write is for internal company use, and they were just silly little things like a message box popping up asking why you would have clicked there, or some kind of motivational (work, not religious) blurb.
Security, safety, correctness are not affected by humor.
Oh, yes they are, when it comes to complex software systems: bits and pieces of programmer humor don't belong there. I mean, would you want that realtime ECG to show a flatline and zero pulse and zero blood pressure and a steady tone when you happen to press a certain combination of buttons ... and then a few seconds later flash "JUST KIDDING!" on the display? Because if you allow programmers free reign on their twisted idea of what is funny that's exactly what will happen. Believe me, if you knew programmers the way I do, the very last thing you'd want is us imposing what we think is funny on your equipment.
I would not tell you how to run your practice, or how to interact with your patients. That's because I wouldn't know everything that could cause damage and what would not. None of us do: we're software people not doctors. That's your department, that's where you need to be in control. The software should be transparent, in the background: anything entertaining that happens between you and your patients/coworkers should be your responsibility. That principle applies to any field, really, whether you're a doctor or an operations manager at an oil refinery.
Now I agree, in a working environment humor is a vital part of job satisfaction. The people I work with every day are among the most intelligent and genuinely funny people I've ever known. I enjoy my work all the more for that. But (and this is a big "but") they also take their work very seriously, and would look askance at most of the people in this thread. Certainly, they'd never dream of putting an Easter Egg in one of our products. That's not what we're paid to do. Period.
I would fully expect a doctor to appreciate that perspective.
The higher the technology, the sharper that two-edged sword.
Yes, it is human nature to add a personal touch to a mark a big accomplishment. BUT---do not attempt to use humor, as in email and blogs, humor in software is really hard to pull off (especially to any non-geek audience) and may cost you dearly in the long run. A few identifying marks - names of developers for instance professionally done - ultimately protects you or your company's ownership of the code and should always be embedded (encrypted even 1 off ASCII) for your own legal health.
Images are problematic beyond perhaps a personally owned pic of the development team as that might introduce copyright issues if you just snag one off the Internet.
I am not for embedding any Easter Egg with code that does more than bring up a window and displays a professional business card, as calling other sections of the "real" code can mess up tightly controlled variables or cause other bugs. Even a professional message of: thank you for using my software, I was happy to be of service, tho reeking of thinly veiled self promotion accomplishes the desire for a personal touch without compromising professionality.
To sum up: never do Easter Eggs for humor, and don't steal others' copyrighted work to do it. Never let an Easter Egg interact with the "real" software's critical routines. Do use a 100% professional Easter Egg slightly hidden and text lightly encrypted to put your legal stamp of ownership on the product. You should have a few of these routines already written and ready to paste in your code so you can respect the customer's time line and not waste their resources getting it done.
Great discussion everyone.
If it's my personal code, or I'm doing it for myself and have creative and legal control, sure.
But if I'm coding it for a customer, that person has a right to insist on no easter eggs, and an intelligent and security-conscious customer will. (See the sample OWASP contract security annex.)
Define "Would" ...
http://www.mackido.com/EasterEggs/index.html
http://www.mackido.com/EasterEggs/CD-System70.html
MacOS 7.x - 9.2.2:
http://www.macmothership.com/maccontent/info/AppleEasterEggs1.6.sit
Part of my job is writing software that is used internally. Our culture fits perfectly fine with easter eggs, and we all have a good time when someone finds them. When I write software for outside customers, I wouldn't want to make it my last contract due to a silly joke.
I hope you don't intend spending a couple of days on adding an easter egg. I doubt your application is flawless. A couple of days goes a long way for bug fixes and cleanup.
We produced an integrated public website and inventory management / customer club app for a winemaker. Their brand was very fun and eclectic. So we approached them with the idea of adding easter eggs as an incentive to get their customers to explore and enjoy the whole site.
They loved the idea. And even further they let us keep them a secret from them. They wanted to experience finding them too.
I haven't been in a situation where I had to weigh the ethics of adding an easter egg in a system where they weren't welcome. My first hunches though are if adding one decreases the value of the product to the user or makes it less functional, I wouldn't. Barring that I love easter eggs. I felt great getting paid to create easter eggs too.
As much as we would all like our names on our work, many of us work under contract to create software that then belongs to the client. Unless you have it in the contact, and/or it is in the specification that an about dialog displays the programmer's name, doing this may be actionable. Many companies where the owners are developers themselves are ok with this because they understand. Some companies feel they need plausible deniability in case a developer runs afoul of the law, like that file system guy. Did IBM really want everyone to know Easywriter was written by Captain Crunch? Not really. In fact that was quite a lapse of judgement. Support people just hate hearing from users that unknown functions exist when undocumented keystrokes are entered. I suspect this kind of thing originated in game software mostly. In retrospect, people would be surprised at all the software I have written, and I wish I had the ability to have my name displayed when people are at an ATM machine, or use a SCSI hard drive...
Reading this thread, I finally get the origins of the expression CYA: it's the Kevlar pants some people wear to protect innocent bystanders against the sonic boom when the the large carbon briquette they're clenching suddenly compresses into that small diamond of professional livelihood.
In a bookstore the other day, I was leafing through Zittrain's "The Future of the Internet--And How to Stop It". I didn't take much from it myself, but it's a fine summary of many issues to pass along to that clueful someone outside the IT profession.
Had a nice passage concerning Verkeersbordvrij.
From http://www.spiegel.de/international/spiegel/0,1518,448747,00.html
So much for the rigid linear relationship between rule conformance and orderly outcomes so beloved among the pride-in-earning-to-eat-another-day crowd.
That said, I think eggs are juvenile outlets, and utterly inappropriate for any class of software that can result in a more serious injury than a bent nose.
At the same time, I don't feel professionalism demands such a cold relationship with your work that your emotional investment never rises above rule conformance and personal CYA blast containment shields.
And no, don't think I'm advocating Verkeersbordvrij as a universal cure-all. I'm not even convinced its initial success will hold up.
I imagine most "easter eggs" are added as the result of working long hours because it's a programmers job to live up to other peoples expectations. Of course those expectations come from the customer who has been promised a star gate to Mars.
For delivered code..... If a coder/developer chooses a name or example or whatnot that was not specified in the spec, I find that okay. If the "Easter Egg" is executable code, or takes more memory or disk space than the spec'ed code requires -- I will fire them and blackball them! No excuse for that childishness.
-- Michael P. Brininstool
The key word here is PROFESSIONAL. You are being paid to write what the customer wants, period. The code is not yours. If you really were a professional, you wouldn't be asking such a question. I really hope I don't get you assigned to one of my teams.
Just the number of comments for this story is a scarry thought.
Wanna fight ? Bend over, stick your head up your ass, and fight for air.
Many of the online courses I develop include UI screenshots of forms. When the forms involve contact info, I use phone numbers from places like marijuana anonymous.
I don't like to make the operation of the code any more convoluted for the next guy. So it's my belief that Easter Eggs should stay out unless specifically in the requirements.
Besides, why have code comments if you can't put Easter Eggs there? Annoying piece of code that someone else wrote could do really well with an ASCII Homer Simpson and your pearls of wisdom from fixing the thing or something.
So yeah.. I'd keep them in the comments only for other developers to see. Even a simple comment such as, "What are you looking down here for?" half way in to the code is cute.
~~ Behold the flying cow with a rail gun! ~~
An easter egg doesn't have to be visible to the end user. Or even if it's visible it doesn't have to be an "interesting" piece of code. Some extraneous comments in the source code, or some extra text in a help screen will serve posterity without creating havoc.
to be serious: when there is no traffic at all, you may start the disco mode. Probably late night in a small town.
Cat got your tongue? (something important seems to be missing from your comment ... like the body or the subject!)
This was an excellent FP. Concise, confident, and actually is first.
DRM: Terminator crops for your mind!
Sorry to disappoint you, but 1) I'm not in your country, 2) anything else than simultaneous green on directions defined as "colliding" is a fair game, covered by warranty for "out of specs operation" maybe, but not qualifying under "jail time".
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
I can't believe there's this many comments and no one brought up the Atari 2600's Adventure.
First recognized easter egg in software. Atari at the time had a policy of not crediting individual programmers, so coder Warren Robinett left a secret way to see his name.
http://en.wikipedia.org/wiki/Adventure_(Atari_2600)#Easter_egg
So an "I was here" message is the original intent of easter eggs and your proposed usage would be completely in the spirit of that.
Whether it would be in the spirit of your employment contract, however, is left as an exercise for the reader.
AT Machine or ATM.
Now wash your hands.
My dad is a boat maker and he signs/dates all of the boats he helps make in hard to find places. He calls it leaving his mark of pride. If your not proud enough to put your name to your work then you need to find a new career. Putting in a tiny easter egg with the date and your name at completion of the project shows pride in your work.
Years ago I worked on Automated Teller Machines for Western Bancorp, a holding company associated with First Interstate and some other banks.
Browsing this thread, and I'm staggered that nobody's mentioned code reviews.
Surely when you commit your code changes to the repository the easter-egg code change is flagged up in the code review process? At which point most people with any sense of professionalism would say "Hey, that's got f-all to do with the specifications for the change you're supposed to be making", so it fails the change-management process and gets rolled out.
It seriously scares me that people can get significantly functionality changes into the code of their production systems without it being spotted/removed as a potential vulnerability.
I guess most people who write easter eggs must be working on pretty trivial projects...
I've created several applications used by financial institutions for printing millions of cashier's checks each year. You should read what I've written in the micro-printed signature line. You'll need a decent magnifying lens, of course.
you dont have to show the end user that you were there, but having your name as a graffiti allover the program in comments will serve your purpose of recognition. However, if you want to add soem humour, I dont think it's a good idea in a professional program, after all this might come back at you when an auditor or quality controller looks into the software, it might harm your career.
I left them with a tool that featured a "fart button" at work once. Still in use today - although the sound files have since been deleted
Most places I have worked for make you sign something that you will not put easter eggs in and if you do they can terminate you immediately and without notice. Not worth getting fired over....
Some really great commercial software has had Easter Eggs! My favorite was from the "Igor" data analysis and graphing program. What that program couldn't do wasn't worth doing! The entire Numerical Methods book was included in that software! This was from the middle 90s...so date me!
One of the windows was titled "History" and collected all the messsing around you did trying to get a graph to look just right. You could then copy the History into a script to replicate the graphs anytime. Deleting contents of the History window brought up a Dialog box that asked:
"Are you sure you want to change history?"
with the selection buttons of
"Da" and "Nyet".
That was 10 of the most enjoyable laughing minutes I've ever had with any program. It's still my favorite program for data analysis!
"I never get lost because everybody tells me where to go"
A couple of my personal rules are
1. No profanity in any of the code or comments... when I want to say:
printf("WHAT THE FUCKING SHIT!!\n");
I instead command myself to write:
printf("AAAAA\n");
This avoids those cases where the end-user might see something really bad that got left in the code.
2. No easter eggs. Unless you are willing to say that everyone who holds your future contracts in their hands is guaranteed to not look upon the easter egg in a negative light, you're taking a chance. The mere presence of an easter egg might be enough, no matter how innocuous.
That being said, years ago when I was a young student intern, I wrote a telnet client for Windows (before one was bundled with it, of course) that would pop up a dialog box with a picture of a goat and the words "Goats detected!" whenever the string "goats activate" was received. This was my first and last "professional" easter egg, and I consider it a dumb idea that is now good for a small laugh.