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.
Several large software companies have left easter-eggs in "Professional" products. Microsoft office had pinball and a flight simulator, I seem to remember.
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.
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!
Comment removed based on user account deletion
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
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.
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.
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.
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 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.
must not code fast enough .. Real programs only spend two hours a day programming .. then rest is spent sleeping, getting coffee, or posting on /.
Go go Gadget Nailgun!
I used to work in the visuals department for a flight sim company and it was common practice for the image database devs to sign their names and leave each other messages at something like -10m below the airport's primary runway.
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!
AT&ROFLMAO
I write firmware for medical devices. You want some easter eggs in your ECG?
That's just good practice. You should put in a handful of bugs and see how many your QA department finds.
If you put in 10 and they find 8 of those plus 24 other bugs, then you can roughly estimate that there are about 30 bugs in the code that you have to fix.
Test your testers.
---
ECHELON is a government program to find words like bomb, jihad, plutonium, assassinate, and anarchy.
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.
A humorous error message often brightens the day of the poor guy in operations who has to report back to the developer.
Blar.
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.
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.
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!
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.
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.
Why are you assuming the question is in regards to a website? The text mentions the project as a "large software product". There's not even an implication that this is product a website.
Time to broaden your horizons methinks.
The
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...
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.
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+
how the hell is this modded down? the best code is no code, adding random crap will only have your customers wondering what other random crap is floating in there.
Rocket science is easy. Neurosurgery, now *that's* difficult.
I think we're talking a difference in definitions here. To me, an Easter Egg is hidden functionality in a software product which is placed there by development staff without the foreknowledge or approval of management. I put plenty of finishing touches in my software, and sometimes there are hidden features that end users aren't told about until they need them. I see nothing wrong with that. Furthermore, such features always relate to the primary purpose of the application (diagnostics, auto-repair functions, etc.) and are not just a way for me to put my stamp on the product. As the senior engineer on the job, the product itself does that.
Also (and this is important) I'm totally up front about everything that I'm designing into the software, management is aware of what I'm doing and approves it, and there are no surprises. So yes, I do believe a developer placing unauthorized code into an application not owned by him or her is suffering from an ethical lapse, regardless of how "harmless" that code is claimed to be. Depending upon the application, the mere existence of such code can cause problems. I guess you don't work on anything that would qualify as "mission critical", that's all I can say.
And furthermore, it's not up to the individual developer to make the judgment about "harmlessness" either, not when it comes to potential legal liability, corporate PR or customer satisfaction. Just do your job to the best of your ability, and live with the knowledge of a job well done. If that's not enough for you, maybe a career change is in order.
The higher the technology, the sharper that two-edged sword.
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.
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.
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.
You are just upset because you know in your heart that he is correct.
There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
My take would be the bogus waste of time for the testers. Each known, introduced bug consumes resources that would go to actual testing. Add to that, it's not the programmer's responsibility to test QA, it's theirs to test him/her and if they find a shit load of bugs, he/her might start seeking employment for being a crappy programmer. And I sincerely doubt anyone will believe or be humored by the revelation they were purposefully introduced.
http://www.folklore.org/StoryView.py?story=Stolen_From_Apple.txt
...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
*WRONG* You guys are the reasons why software sucks in general, the damned cowboy attitudes. Professional developers leave the need to "leave their mark" at home. You're not a fucking dog needing to pee on a tree to show "your mark".
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?
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."
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.
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.
That only works if you assume all bugs are equally likely to be found. Clever idea though.
Give me Classic Slashdot or give me death!
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...