This is obviously something that is best classified in the general topic, simply because the software I write about is Unix and its derivatives (primarily Linux). What inspired this is two things in particular:
- I discovered an easter egg in the editor vim earlier this year (which is to say, late September, early October).
- Besides fond memories of easter eggs I discovered over the years, I enjoy designing them myself, for programs I write (or at least one that others will see, i.e., a specific MUD).
This is just for fun (which is expected with a topic about easter eggs) and basically a list of easter eggs that are memorable to me, that either I discovered on my own or remember reading about them at some point over the years (I’ll specify which is which). I won’t list any I have implemented any where at all and I never will. These easter eggs, mind you, are all old with perhaps the exception of the vim one (which I suspect has been there for quite some time but it is new to me). Therefore I don’t think this is harmful. If however you enjoy finding them on your own, don’t read this. That is my warning.
- Colossal Cave Adventure, also known as Advent, is an old text based game, somewhat like a MUD only single player. You interact with objects, open/close doors, you can get lost, you can die, and you gain points, too. While the version I am looking at now (version 4, one I fixed a segfault in, for a friend and therefore have it locally) is not the one I played years ago (it was an earlier version that I played), it is still fun and absolutely has easter eggs. The narrator (I guess you could call it) doesn’t take to swearing kindly. There are many responses to swearing and there are many words it sees as swearing. I’ll leave it to your imagination except for the one I find most amusing (at least, literally it is amusing – it contradicts itself):
? screw you
I trust you know what “you” might be, ’cause I don’t.
Interestingly, when said friend referred to a crash, and they didn’t know exactly what triggered it (it was for her friend who has a Mac and first it failed to compile to which i fixed that) except that it occurred after a command was typed. What that command in question was, I don’t remember (they didn’t know and in fact it wasn’t a specific command and not only that command – it happened more than once) but I had the idea to play with exactly the above: as I was swearing at the computer, it gave me the information I needed; it was a segfault and I recompiled (with debugging symbols – the source is actually obfuscated and I didn’t think of running it through a beautifier and the programmer in me thought to make it drop a core), removed the limit on core size, caused it to crash (therefore dumping core) and found that there was a dereference on a NULL pointer (which, as I’ve discussed before, is much preferable than a pointer that was never assigned to anything – at all – or otherwise pointing to garbage). Added an if, recompiled and it was all fine.
- I liked this one a lot although I admit I enjoyed more so figuring out how to defeat the boss (and therefore win the game) more than the easter egg (which I also discovered on my own, if memory serves me correctly). I played the game a lot and I beat it many times. The last area – Icon of Sin – is one hell – indeed, it is intended – of a toxic dump full of demons and monsters alike… but very well worth playing through (unless you are very easily frustrated). This is one of the few computer games I played – most were console games. The game in question is DOOM 2. The easter egg is the severed head of one of the developers, John Romero’s. If you are curious, check http://doom.wikia.com/wiki/ as they have a picture and (for those wondering how it is found) how to find it. What that Wiki page informed me of, something I did not know, is at the beginning of the last area – Icon of Sin – the voice says something that explains – once you decipher it – how to defeat the last boss. I had (have is a much better word) a knack for figuring out how things work and how to solve things (puzzles, games, …) and so I beat it without the hint (there are quite a few things in the area that can make or break your success but I quite enjoy these things).
- Mortal Kombat series is another game I really enjoyed for a lot of years. These features are more well known, perhaps, but there are hidden characters in the series. One character, named by the reversing the last name of the two developers (or two of, being Ed Boon and John Tobias) is Noob Saibot. He appeared at some points (don’t remember specifics) and says “Toasty”. While checking the Mortal Kombat Wiki, I saw two other names that ring a bell: Smoke and Jade. Looking further it seems that I did indeed go beyond seeing them in the background (definitely this) and in fact fought against them (whether I figured out how to do this on my own or anything else I really cannot remember – I suspect not by myself in full).
More generally, I know there are many others I discovered (or was told about and enjoyed) over the years. I’ll reflect on a theme, one I did not do at all but I remember reading way back when. Then I’ll get to the vim easter egg.
So if you search Google for ‘Bill Gates is the antichrist’. The entry on http://urbanlegends.about.com is much of what it used to be (if not all). It is unfortunate that it isn’t the original, the one I saw so long ago: the original was lost because it was on Geocities and that is long dead. There is an easter egg in one of Microsoft Office (Excel 95 maybe?) that is listed. There’s also some maths with Bill Gates name (think: decimal values being added up) and what it equates to. Funnily enough, among listed is (not so much related to Bill Gates but is is still relevant to the fact I mention the editor vim – though in this case it is vi more so):
Note that the internet is also commony known as the World Wide Web or WWW... One way to write WWW is V/ (VI):
WWW V/ V/ V/ 666Something to ponder upon, right?
Why is that amusing? Because of the editor wars between vi and emacs. This is one of those wars that is not hell-bent (can’t help it) on flaming but rather wit and humour. Wikipedia has an entry on it but it is claimed vi is the editor of the devil for the above reason (‘vi’, Roman numeral for 6). (There were more examples in that Wikipedia article but that’s the relevant one).
As for the easter egg in Vim I will give an explanation of why and how I discovered it (because I found that more useful than the easter egg), allowing those who are curious, to try it themselves (tip: you can change it as well!). Of all the programs I use, the one I use the most (perhaps better stated is, of all the utilities), is the shell and in my case ‘konsole’ (at my server I don’t have a GUI and so I just use the console itself). I usually have 5-10 tabs (or more) which means 5-10+ shells open at any time. Since I use vim for my editor of choice (I used to use vi but years ago tried vim and I agree with the name: vim is indeed VI iMproved), and since it allows you to open one file and then switch to another file without exiting (you can also open more than one ‘window’, each with another file and this applies equally), the current task in the tab (of konsole) shows the original invocation. This was annoying for many reasons. Looking in to how to fix this, it would be something like putting this in your runtime file (per-user would be ~/.vimrc but you could also use system-wide but I tend to frown upon enforcing changes on all accounts, even if they can disable it):
:auto BufEnter * let &titlestring = hostname() . ":vim " . expand("%p")
:set title titlestring=%<%F%=%l/%L-%P titlelen=70
Now if you open vim with (example): ‘vim file1′ you would note as it is before (in konsole tab): ‘vim file1′ (it might show other information like the hostname or however you configure it but this is up to you, in the profile settings). However, if you were to be in command mode and then use ‘:e file2′ you would now see the tab has been updated to show ‘vim file2′. Now if you quit vim (command mode): ‘:q’ you will see the tab title has changed again. “Thanks for flying vim!” As for how you can change it, I’ll leave that to you but it is noted in the help file (‘:help title’ and read that entry as well as the entries below it, about titles). As an interesting bit, because I wanted to confirm that indeed the two changes are exactly what is needed, I commented out (prepend with a double quote) the first line, saved and (in another shell) started vim. It then shows as the title the name of the file followed by much whitespace then what is usually in the status (bottom of screen by default): current line/line count % where current line is the line where the cursor is, the line count is how many lines total and % is what percentage of the file the cursor is at.
As a final note: Enjoy easter eggs, whether you find them on your own or not: we put them there for our own enjoyment as well as yours! Although I am obviously biased, I think it really shows how programmers are clever and how easily they are amused. It is a good thing, though, it is a good way to release frustrations and some of the time programmers are not really appreciated (or the amount of effort they can put in is not always respected) so these things just show that they too can have fun and when others find it, they hopefully enjoy it as much if not more than the actual program.