{"id":20169577,"url":"https://github.com/hwayne/hacker-test-history","last_synced_at":"2026-02-13T01:02:20.257Z","repository":{"id":35082944,"uuid":"152645435","full_name":"hwayne/hacker-test-history","owner":"hwayne","description":"Let's explain all the hacker test questions!","archived":false,"fork":false,"pushed_at":"2022-08-02T00:31:33.000Z","size":164,"stargazers_count":43,"open_issues_count":0,"forks_count":5,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-01-13T15:24:12.181Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hwayne.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-11T19:33:36.000Z","updated_at":"2024-08-24T10:20:11.000Z","dependencies_parsed_at":"2022-08-08T05:00:23.573Z","dependency_job_id":null,"html_url":"https://github.com/hwayne/hacker-test-history","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwayne%2Fhacker-test-history","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwayne%2Fhacker-test-history/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwayne%2Fhacker-test-history/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwayne%2Fhacker-test-history/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hwayne","download_url":"https://codeload.github.com/hwayne/hacker-test-history/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241605820,"owners_count":19989612,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T01:13:04.870Z","updated_at":"2026-02-13T01:02:20.228Z","avatar_url":"https://github.com/hwayne.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hacker Test History\n\nThe [Hacker Test](http://www.mit.edu/people/mjbauer/Purity/hackpure.html) was an old test of how much of a 'hacker' (as in 'nerd', not 'cracker') you are. Since it came out in 1990, almost all of the questions are obsolete. That makes it a really neat historical document of what people considered cool at the time. Let's explain all the references!\n\nIf there's something you recognize, just make a pull request with the explanation. If there's an explanation you want to improve, just make a pull request with some history and links. We're not picky.\n\n# [The Test](http://www.mit.edu/people/mjbauer/Purity/hackpure.html)\n\n####  0000 Have you ever used a computer?\n\n(As argued by Edsger Dijkstra, [numbering should start at 0](https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html).)\n\n####  0001 ... for more than 4 hours continuously? 0002 ... more than 8 hours? 0003 ... more than 16 hours? 0004 ... more than 32 hours?\n\n####  0005 Have you ever patched paper tape?\n\nPaper tape, also called [punched tape](https://en.wikipedia.org/wiki/Punched_tape) or perforated tape, was an early, inexpensive storage media, consisting of a long, thin strip of paper, divided into a fine grid (typically 5 or 8 columns). Each cell of this grid corresponded to one bit of information. If the grid was punched, the corresponding bit would be 1, otherwise it would be zero (or vice-versa).\n\nSince paper is inexpensive and malleable, and the reading mechanism was usually optic, it would be very easy to \"patch\" paper tape: one could either punch holes, or cover erroneously punched holes by gluing electric tape or pieces of paper on top of them. However, doing so was fairly tedious and error prone, and you had to find it easy to \"read\" and \"write\" binary. Furthermore, finding out exactly *which* bits to toggle in this manner usually meant being able to read machine code dumps of the code -- not an easy feat!\n\n\n####  0006 Have you ever missed a class while programming? 0007 ... Missed an examination? 0008 ... Missed a wedding? 0009 ... Missed your own wedding?\n\n####  000A Have you ever programmed while intoxicated?\n\nThis is `000A` and not `0010` because the numbering is in hexadecimal. Hexademical, or base 16, uses 0-9 and a-f as digits. As `16=2⁴`, you can represent an 8-bit byte as 2 hex numbers.\n\n####  000B ... Did it make sense the next day?\n\n####  000C Have you ever written a flight simulator?\n\n####  000D Have you ever voided the warranty on your equipment?\n\n####  000E Ever change the value of 4?  000F ... Unintentionally?  0010 ... In a language other than Fortran?\n\nThis question refers to a famous, occasionally abused (but often unintentionally hit) [pitfall in Fortran](https://www.ibiblio.org/pub/languages/fortran/ch1-8.html#01).\n\nFortran II, introduced in 1958, supported user-written subroutines and functions, but all parameters were passed by reference, including values not bound to any variable (or constant) name. In other words, a function call like this:\n\n    READ INPUT TAPE 5, 501, IA, IB, IC\n    CALL MYFUNC(IA, IB, IC, 4)\n\nwould result in code that stored the 4 at some memory location, and then passed its location to `MYFUNC`, along with references to IA, IB, and IC.\n\nMYFUNC therefore operated not on \"dummy\" values on the stack, as in C, but on the original values of its parameters, and any change, to any parameters, even those passed as literal values, would be reflected in the original value.\n\nConsequently, a bug in functions that used some of their parameters as output parameters could result in the wrong value being updated.\n\nTwo things made matters worse though.\n\nFirst, many Fortran compilers ran on systems without a MMU and virtual memory support. On these systems, not only would literal values be modified, but *constants* could be modified as well.\n\nSecond, most Fortran compilers would \"pool and reuse\" constants -- that is, store a particular, often-used value in a single memory location, and pass that wherever it was required. Thus, if MYFUNC above changed a pooled instance of 4 to 5, all other calls that passed a reference to that memory location (and therefore expected a 4) would get 5 instead.\n\nWhile this was definitely a source of unpleasant bugs, it could also serve as a base for some clever optimizations (or obfuscation). Particularly creative programmers would have adapted this mechanisms in languages other than Fortran, probably much to the frustration of everyone else.\n\n\n####  0011 Do you use DWIM to make life interesting?\n\nFrom the Jargon File, [DWIM] stands for \"Do What I Mean\", and in particular a specific tool that attempted to correct typos and spelling errors. Since general-purpose AI had not been invented at the time of the Hacker Test's creation, any automatic \"correction\" was as likely to be harmful as productive, thus making life \"interesting\" if (for example) the DWIM tool decided what you *really* meant was to delete all your files.\n\n[DWIM]: http://www.catb.org/jargon/html/D/DWIM.html\n\n####  0012 Have you named a computer?\n\nMost personal computers of the early 90's ran single user, non-networked OSes like DOS or Windows 3.0, which didn't even have the concept of a host name.\n\nRunning an OS you _could_ name on your own computer or managing a corporate/university network definitely could raise your hacker cred much more than in the age when even cellphones run UNIX-like OSes with hostnames.\n\n####  0013 Do you complain when a \"feature\" you use gets fixed?\n\nA precursor to [XKCD 1172](https://xkcd.com/1172/).\n\n####  0014 Do you eat slime-molds?\n\nA reference to [NetHack](https://www.nethack.org/), one of the most popular roguelikes of all time. One item is the [fruit](https://nethackwiki.com/wiki/Slime_mold), which you could configure to be whatever food you like. If you do not configure it, the default is \"slime mold\".\n\n####  0015 Do you know how many days old you are?\n\n####  0016 Have you ever wanted to download pizza?\n\n####  0017 Have you ever invented a computer joke? 0018 ... Did someone not 'get' it?\n\n####  0019 Can you recite Jabberwocky?  001A ... Backwards?\n\nThe [Jabberwocky](http://www.jabberwocky.com/carroll/jabber/jabberwocky.html) is a famous nonsense poem by Lewis Carroll. Most of the words are made up.\n\n\n####  001B Have you seen \"Donald Duck in Mathemagic Land\"?\n\n####  001C Have you seen \"Tron\"?\n\n####  001D Have you seen \"Wargames\"?\n\n####  001E Do you know what ASCII stands for?\n\nThe [American Standard Code for Information Interchange][ASCII] assigns a number from 0 to 127 to alphabetic, numeric and punctuation characters widely used in the United States of America, plus a variety of mostly-obsolete control characters that represent things like paragraph breaks. First standardized in 1963, it forms the basis of nearly every modern character set, including Unicode.\n\n[ASCII]: https://en.wikipedia.org/wiki/ASCII\n\n####  001F ... EBCDIC?\n\nThe [Extended Binary Coded Decimal Interchange Code][EBCDIC] is another character set like ASCII, designed around the same time as ASCII by IBM for their System/360 line of mainframe computers. It is used almost nowhere else, but since IBM mainframes live forever and the software they run lives even longer, EBCDIC is still a thing.\n\n[EBCDIC]: https://en.wikipedia.org/wiki/EBCDIC\n\n####  0020 Can you read and write ASCII in hex or octal?\n\n####  0021 Do you know the names of all the ASCII control codes?\n\n####  0022 Can you read and write EBCDIC in hex?\n\n####  0023 Can you convert from EBCDIC to ASCII and vice versa?\n\n####  0024 Do you know what characters are the same in both ASCII and EBCDIC?\n\n####  0025 Do you know maxint on your system?\n\nAlthough the smallest possible unit of storage is a single bit, and modern computers have gigabytes or even terabytes of memory, a computer has a much narrower range of sizes it's comfortable working with. The smallest is a byte, normally 8 bits, and the largest is typically 32 or 64 bits. To process a larger amount of memory, the computer works its way through 32 (or 64) bits at a time.\n\nOn a computer that can process at most 32 bits of data at a time, those 32 bits have 2³² possible values, which you can treat as an integer between 0 and 2³² - 1. MAXINT is a predefined name for the largest possible integer on a given system; on a 32-bit system it would be 2³² - 1, or 4,294,967,295 (about 4.3 billion).\n\n####  0026 Ever define your own numerical type to get better precision?\n\nIf you want to work with numbers larger than maxint, one approach is to treat regular machine integers as \"digits\", store numbers as a sequence of those digits, and teach your computer how to add, subtract, multiply and divide those numbers using the traditional \"longhand\" algorithms. This is much, much slower than using your computer's normal arithmetic functions, but it means you can operate precisely on numbers as large as available memory.\n\n####  0027 Can you name powers of two up to `2**16` in arbitrary order? 0028 ... up to `2**32`? 0029 ... up to `2**64`?\n\n####  002A Can you read a punched card, looking at the holes? 002B ... feeling the holes?\n\n####  002C Have you ever patched binary code?\n\nComputer programs are hugely complex, with many small details that need to kept consistent in thousands or millions of places. Unsurprisingly, computer programmers fairly quickly taught computers themselves to keep track of those details, so a program could be written in a \"high level\", human-friendly format (the \"source code\"), and then automatically converted to the \"low-level\" format the machine could understand. Typically, the high-level format is a text file with readable English keywords like \"if\" and \"while\", and the low-level format is a sequence of instructions represented by numbers stored as binary.\n\nWhen a problem is found in a program, the sensible thing to do is to modify the high-level version, and reconvert it to the low-level format. Unfortunately, that's not always possible - sometimes, the original source is lost, or destroyed, or illegal to distribute - and so it is necessary to modify the binary directly. This is massively more difficult than modifying the source, since the program is in a very different format, and because a change in one place might require many changes in other places to keep things consistent, changes that would ordinarily be handled automatically during the conversion process.\n\n####  002D ... While the program was running?\n\nAs well being more difficult to attempt (there are lots of ways to edit a file on disk, editing a program in memory sometimes isn't even possible), this is more difficult to get right. If you edit a program on disk, the modified version only needs to be consistent with itself, since a running program will either be the original or the modified version. If you edit a program as it's running, the program is a combination of the two, so it the original and modified versions need to be compatible with themselves and with each other.\n\n####  002E Have you ever used program overlays?\n\nNormally, when a program runs, the entire thing is loaded into memory where the CPU can get at it. However, a very large program might not fit into the computer's memory, especially if the program also needs to work with a large amount of data. \"Overlays\" are one solution to this problem: divide the program into smaller chunks, and have the \"main\" program unload one chunk and load another when it's needed. This works best with programs that have different modes of operation, like a game with a \"strategy\" phase and a \"tactics\" phase, or an office suite with a \"word processor\" mode and a \"spreadsheet\" mode.\n\nMost operating systems only provide a way to run a single, entire program at once, so an overlay system is much more complex, and often involves doing a lot of work the operating system would normally do on your behalf.\n\n####  002F Have you met any IBM vice-president?\n\n####  0030 Do you know Dennis, Bill, or Ken?\n\n[Dennis Ritchie][dmr] and [Ken Thompson][ken] created the Unix operating system at Bell Labs in the 1970s. After the Unix source code was made available to various universities, a student at the University of California, Berkeley named [Bill Joy][bill] helped create the BSD variant of Unix, and in particular the `vi` editor. He later went on to co-found tech giant Sun Microsystems.\n\n[dmr]: https://en.wikipedia.org/wiki/Dennis_Ritchie\n[ken]: https://en.wikipedia.org/wiki/Ken_Thompson\n[bill]: https://en.wikipedia.org/wiki/Bill_Joy\n\n####  0031 Have you ever taken a picture of a CRT?\n\n####  0032 Have you ever played a videotape on your CRT?\n\n####  0033 Have you ever digitized a picture?\n\nImage scanners had existed for a long time (famous [Lenna](https://en.wikipedia.org/wiki/Lenna) image is from 1973), but when the test was written, easy to use flatbed scanners weren't common or affordable.\n\nTo answer yes one would have to either have access to what was specialist hardware, or try to get a reasonable result with a hand scanner.\n\n####  0034 Did you ever forget to mount a scratch monkey?\n\nA \"scratch pad\" is a notepad used for unimportant notes, a \"scratch disk\" is a storage device containing no important data; the idea is that if you're about to do something that might damage important data, you unmount the important disk and mount a scratch disk so that if something does go wrong, nothing of value is lost.\n\nThe Jargon File relates the story of a field technician who ran a diagnostic on a faulty computer without realising it was normally used to experiment on a monkey, and said monkey was still physically wired up to it, so he didn't think to mount a [scratch monkey] before starting to tinker.\n\n[scratch monkey]: http://www.catb.org/jargon/html/S/scratch-monkey.html\n\n####  0035 Have you ever optimized an idle loop?\n\nAn idle loop is what a computer executes when it has nothing better to do. Optimizing an idle loop cannot make anything go faster, since if there were anything to do, the computer would be doing it instead of idling.\n\nThat said, although an idle loop cannot run *faster*, it can run more *efficiently*. In this modern age of battery-powered computers, when a computer enters an idle loop it will often slow down or even turn parts of itself off to conserve power. In that sense, it does make sense to optimize an idle loop: if you can get the computer to slow down more or turn off more things, that will extend the battery life.\n\n####  0036 Did you ever optimize a bubble sort?\n\nSorting a list of items is a well-studied problem, and there are many sorting algorithms available with various trade-offs. Bubble Sort is one of the uniformly worst-performing sorting algorithms, and any effort put towards optimizing it would be much better spent replacing it entirely with a smarter algorithm like Quick Sort.\n\n(_That said_, there are [some situations](https://cs.stackexchange.com/a/53228) where Bubble Sort is the right algorithm, in which case you should probably optimize it.)\n\n####  0037 Does your terminal/computer talk to you?\n\n####  0038 Have you ever talked into an acoustic modem? (0039 ... Did it answer?)\n\nA \"modem\" (short for \"modulator/demodulator\") is a device that can turn a digital signal into an analogue waveform and back. When two computers need to communicate, but they are too far apart to be connected directly, they can be connected to modems wired up to the telephone network, and talk to each other like an ordinary human conversation. However, prior to 1984, when Bell Systems held a monopoly in the United States, they didn't allow unauthorised equipment to be wired up to the telephone network. Instead, an acoustic modem had a little speaker and a little microphone; a human would dial the telephone number of a computer on an ordinary phone, then attach the phone handset to the acoustic modem so the computer could communicate.\n\nTalking into an acoustic modem is easy, if you can find one, but not very useful.\n\n####  003A Can you whistle 300 baud?  (003B ... 1200 baud?)\n\nWhen two modems connect to each other, they play [a particular pattern of tones](https://www.windytan.com/2012/11/the-sound-of-dialup-pictured.html) and listen for that same pattern, to verify that the other end is also a modem, and is speaking a compatible dialect. The tones for the original modem protocol (300 baud) are the simplest, and might plausibly be possible for a skilled human to replicate.\n\n[Baud](https://en.wikipedia.org/wiki/Baud) is a measurement of communication speed, expressed as symbols per second. A communication at 300 baud means 300 changes to the signal being sent per second, so it's not practical for a human to reproduce actual 300 baud communications.\n\n####  003C Can you whistle a telephone number?\n\n[Dual-Tone Multi-Frequency signalling](https://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling) is a way for a telephone to communicate to a telephone exchange. On a 4x4 keypad, a particular frequency is associated with each row and column, so pressing a particular key plays the tones associated with the row and column it appears in. On most consumer equipment, the last column of the keypad is omitted, leaving only the 10 digits, `*` and `#`.\n\nThe various tones required by DTMF signalling are all within the range of human speech (because they must be transmitted over telephone lines), and humans [can sing chords](https://en.wikipedia.org/wiki/Overtone_singing), so it's at least theoretically possible to whistle a telephone number.\n\n####  003D Have you witnessed a disk crash?\n\nOld magnetic disk drives didn't have automatic protection against the head falling onto the platter.\nSuch an event could leave a deep scratch on a platter and render it unusable. It also made a distinctive and scary sound.\nAlso known as a [head crash](https://en.wikipedia.org/wiki/Head_crash).\n\n####  003E Have you made a disk drive \"walk\"?\n\nOnce upon a time, a \"disk drive\" was a unit about the size of a washing-machine. Like a washing machine, it involved spinning a heavy metal core at high speeds, and (like a washing machine) any imbalance of the payload could cause the unit to shake from side to side, and (under the right circumstances) rattle its way across the floor.\n\nThe Jargon File [also mentions](http://www.catb.org/jargon/html/W/walking-drives.html) that certain patterns of disk accesses could cause a drive to walk.\n\n####  003F Can you build a puffer train? (0040: ...Do you know what it is?)\n\nA [puffer train](https://en.wikipedia.org/wiki/Puffer_train) is a particular type pattern in a finite automaton (like [Conway's Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life)) which spontaneously moves across the cell space, leaving smaller structures (akin to debris) behind.\n\nCellular automata are still a very popular pastime among hackers. Puffer trains, though, have particular cultural significance: the first known puffer train in Conway's Game of Life was discovered by [Bill Gosper](https://en.wikipedia.org/wiki/Bill_Gosper).\n\n#### 0041 Can you play music on your line printer? (0042 ... Your disk drive? 0043 ... Your tape drive?)\n\nThe music in this case is not a metaphor: it's literal music. Devices like dot printers or disk drives used stepper motors for accurate positioning of their print heads or, respectively, disk heads. By carefully manipulating the speed and position of these motors, one could modulate their vibration so as to, quite literally, [make them sing](https://www.youtube.com/watch?v=u8I6qt_Z0Cg).\n\nDoing so required not only a pretty good understanding of electronics, programming and music, but also quite a fair deal of creativity. Printer drivers, naturally, do not natively support making printers sing, and indeed some of the sounds occur when the hardware is pushed beyond its safe (or standard) operational parameters. Consequently, creating these sounds sometimes required careful programming and a lot of trial-and-error.\n\n####  0044 Do you have a Snoopy calendar? 0045 ... Is it out-of-date?\n\nProbably a reference to [Real Programmers Don't Use Pascal](https://web.mit.edu/humor/Computers/real.programmers) and an actual [Snoopy calendar generator](https://gunkies.org/wiki/Snoopy_Calendar) in Fortran.\n\n####  0046 Do you have a line printer picture of...\n\nSince line printers could draw arbitrary text on large pieces of paper, they were quickly used for what we would today call [ASCII art](https://en.wikipedia.org/wiki/ASCII_art).\n\n####  0047 ... the Mona Lisa?\n\nIf you're going to adopt old images to a new medium, why not start with [the greats](http://artscene.textfiles.com/asciiart/monalisa.art)?\n\n####  0048 ... the Enterprise?\n\nProbably the [original USS Enterprise (NCC-1701)](http://artscene.textfiles.com/asciiart/enterp.art) from the original Star Trek TV series, although by the time of the Test's publication it might also have been the Enterprise A from the Star Trek movies, or the Enterprise D from Star Trek: The Next Generation.\n\nStar Trek would have had many fans among the MIT hackers who created the Test.\n\n####  0049 ... Einstein?\n\n[Albert Einstein](https://en.wikipedia.org/wiki/Albert_Einstein), famous physicist and hero to scientifically-inclined people everywhere.\n\n####  004A ... Oliver?\n\n[Oliver Wendell Jones](http://artscene.textfiles.com/asciiart/oliver.art), child genius and computer hacker from the comic strip Bloom County. \n\n####  004B Have you ever made a line printer picture?\n\n####  004C Do you know what the following stand for?\n\n####  004D ... DASD\n\n\"**D**irect **A**ccess **S**torage **D**evice\" is an IBMism for a disk drive,\nreflecting the fact that any part of the disk may be accessed directly.\n\nThis was in contrast to a SASD - a *Sequential* Access Storage Device,\nwhich could only have its data accessed sequentially. These were usually\nthings like paper or magnetic tape.\n\n####  004E ... Emacs\n\n\"Emacs\" stands for \"**E**ditor **MAC**ro**S**\".\n\nThis is because Emacs started out as a collection of macros for the\n[TECO](https://en.wikipedia.org/wiki/TECO_%28text_editor%29).  TECO was an\nincredibly versatile and complex text editing system, with a Turing-complete\nmacro language that used every single available character.\n\nEmacs was eventually rewritten, with TECO replaced by C and Lisp, but the\nname lived on.\n\n####  004F ... ITS\n\nITS stands for the **I**ncompatible **T**imesharing **S**ystem.\n\n[ITS](https://en.wikipedia.org/wiki/Incompatible_Timesharing_System)\nwas an incredibly influential operating system for DEC's 36-bit PDP-6 and\nPDP-10 minicomputers.\n\nIt was developed mostly by members of MIT's Artificial\nIntelligence Laboratory as a rejection of the then-current\n[Multics](https://en.wikipedia.org/wiki/Multics) project. (Where Multics\nwas large, written mostly in a high-level language, and contained strict\nsecurity features, ITS was small, written in assembly, and was permissive\nto the point of anarchy.)\n\nITS was never widely deployed, but many early hackers were ITS users and\nfour ITS machines were connected to the early ARPANET and thus it left a\nlong shadow.  It was the birthplace of Emacs, Scheme, and device-independent\nterminal output, among many other innovations taken for granted today.\n\nIts name was a pun on that of the earlier [Compatible Time-Sharing\nSystem](https://en.wikipedia.org/wiki/Compatible_Time-Sharing_System),\nwith which it shares no code.\n\n####  0050 ... RSTS/E\n\n####  0051 ... SNA\n\n[Systems Network Architecture](https://en.wikipedia.org/wiki/IBM_Systems_Network_Architecture), a proprietary protocol stack from the pre-Internet era.\n\n####  0052 ... Spool\n\n####  0053 ... TCP/IP\n\n## Have you ever used\n####  0054 ... TPU?\n\n####  0055 ... TECO?\n\n####  0056 ... Emacs?\n\n####  0057 ... ed?\n\n####  0058 ... vi?\n\n####  0059 ... Xedit (in VM/CMS)?\n\nX in _that_ Xedit has nothing to do with X11, and CMS was not capable of graphics anyway.\n\n[The Hessling Editor](http://hessling-editor.sourceforge.net/) is a modern, cross-platform implementation.\nIt has a graphical version for X11 too.\n\n####  005A ... SOS?\n\n####  005B ... EDT?\n\n####  005C ... Wordstar?\n\n####  005D Have you ever written a CLIST?\n\n## Have you ever programmed in\n####  005E ... the X windowing system?\n\nNo, using GTK/Qt/Motif doesn't count, they hide all the fun of interfacing with X from you. To answer yes, try using Xt and xlib directly.\nAt the very least, try [Xaw](https://en.wikipedia.org/wiki/X_Athena_Widgets).\n\n####  005F ... CICS?\n\n[CICS](https://www.ibm.com/it-infrastructure/z/cics) is a transaction processing framework for IBM mainframes.\n\n####  0060 Have you ever received a Fax or a photocopy of a floppy?\n\n####  0061 Have you ever shown a novice the \"any\" key?\n\n####  0062 ... Was it the power switch?\n\n## Have you ever attended\n####  0063 ... Usenix?\n\n####  0064 ... DECUS?\n\n####  0065 ... SHARE?\n\n####  0066 ... SIGGRAPH?\n\n####  0067 ... NetCon?\n\n####  0068 Have you ever participated in a standards group?\n\n####  0069 Have you ever debugged machine code over the telephone?\n\n####  006A Have you ever seen voice mail?\n\n####  006B ... Can you read it?\n\n####  006C Do you solve word puzzles with an on-line dictionary?\n\n####  006D Have you ever taken a Turing test? (006E ... Did you fail?)\n\nThe [Turing test](https://en.wikipedia.org/wiki/Turing_test) was proposed by mathematician and early computer scientist Alan Turing as a practical test for artificial intelligence. A human judge is given two computer terminals: one is connected to the computer being tested, and the other is connected to another terminal in another room, where a human sits. The judge can type any message on either terminal, and must decide which terminal is talking to a computer and which terminal is talking to a human.\n\nThe [Loebner Prize](https://en.wikipedia.org/wiki/Loebner_Prize) is an annual competition run in the style of Turing's test, but it was first held in 1990, the year after this Test was created.\n\nTo fail a Turing test would mean an impartial observer judged your personality to be more mechanical and artificial than an actual computer.\n\n#### 006F Ever drop a card deck? (0070 ... Did you successfully put it back together? 0071 ... Without looking?)\n\nThe card deck here does not refer to playing cards, but to [punched cards](https://en.wikipedia.org/wiki/Punched_card). Punched cards were small pieces of stiff paper or cardboard, which could be used as storage media, encoding ones and zeroes through the presence (or absence) of holes at pre-determined grid locations.\n\nThe small information density (depending on format, a punched card could represent anywhere from a few characters to a few tens of bytes) meant that a single program needed tens, hundreds, or even thousands of punched cards, which would often be punched somewhere other than in the machine room, where they would be fed to the computer.\n\nNaturally, the worst thing that could happen when carrying a deck of cards across the campus was to drop it. Putting them back together in their correct order was not an easy task when you had hundreds of cards. Putting them back together without looking, just by feeling the hole pattern with your fingers -- thus reading it much like a computer would have -- was an even more impressive feat.\n\nIn practice, this was enough of a problem that IBM sold [card sorters](http://www.columbia.edu/cu/computinghistory/sorter.html) that would put a dropped deck back in order for you.\n\n####  0072 Have you ever used IPCS?\n\n####  0073 Have you ever received a case of beer with your computer?\n\n####  0074 Does your computer come in 'designer' colors?\n\nSilicon Graphics was (in)famous for making [brightly colored workstations](https://web.archive.org/web/20040701221013/http://sgi.com/workstations/) in the age of beige and black boxes.\n\nThey were, however, so powerful for the time that no one could mock them for it.\n\n####  0075 Ever interrupted a UPS?\n\nAn [Uninterruptible Power Supply](https://en.wikipedia.org/wiki/Uninterruptible_power_supply) is basically a big battery: one end plugs into the wall to obtain regular, erratic mains power, and the other end plugs into your computer to supply pristine, smooth power to the delicate electronics. In the event of a blackout or power surge, the UPS usually gives you a few minutes to shut down the computer cleanly instead of the power cutting out suddenly.\n\n####  0076 Ever mask an NMI?\n\nA computer's CPU normally processes instructions in a steady stream, but sometimes a higher-priority event occurs (for example, a key is pressed on the keyboard, or a timeout occurs) and the CPU is _interrupted_ so it can go handle the situation, and eventually it can go back to what it was originally doing. Sometimes if the CPU is doing something very important or timing sensitive and it needs to not be interrupted, it will temporarily _mask_ interrupts, and if any interrupt events that occur won't be processed until the CPU unmasks them again.\n\nHowever, some interrupts are so important they cannot be masked, they are Non Maskable Interrupts (NMIs). Usually they represent hardware failures, or some kind of \"reset\" button.\n\n####  0077 Have you ever set off a Halon system?\n\nA computer data centre involves a lot of electricity and a lot of computers made from volatile substances, so the odds of an electrical fire are high. Electrical fires can't be safely extinguished with water because it conducts electricity, so the usual scheme is to have a button or lever by the door that floods the entire room with [halon gas](https://en.wikipedia.org/wiki/Halomethane#Fire_extinguishing).\n\nSetting off a halon system and refilling it is cheaper than reconstructing a burned-down data centre, but it's not cheap, and probably not something you want to do unless you can actually see flames.\n\n####  0078 ... Intentionally?\n\n####  0079 ... Do you still work there?\n\n####  007A Have you ever hit the emergency power switch?\n\n####  007B ... Intentionally?\n\n####  007C Do you have any defunct documentation?\n\n####  007D ... Do you still read it?\n\n####  007E Ever reverse-engineer or decompile a program?\n\n####  007F ... Did you find bugs in it?\n\n####  0080 Ever help the person behind the counter with their terminal/computer?\n\n####  0081 Ever tried rack mounting your telephone?\n\n####  0082 Ever thrown a computer from more than two stories high?\n\n####  0083 Ever patched a bug the vendor does not acknowledge?\n\n####  0084 Ever fix a hardware problem in software?\n\n####  0085 ... Vice versa?\n\n####  0086 Ever belong to a user/support group?\n\n####  0087 Ever been mentioned in Computer Recreations?\n\nComputer Recreations was a regular column about computing and mathematical puzzles and problems, published in Scientific American.\n\n####  0088 Ever had your activities mentioned in the newspaper?\n\n####  0089 ... Did you get away with it?\n\n####  008A Ever engage a drum brake while the drum was spinning?\n\n[Drum memory](https://en.wikipedia.org/wiki/Drum_memory) consisted of a large metal cylinder coated in magnetic material. To read or write data, a magnetic head would be moved to the correct position along the length of the drum, and then wait for the relevant portion of the drum to pass beneath it. This meant that the faster the drum could spin, the faster the computer could access stored data, and so the drum was kept at its maximum speed as much as possible.\n\nNeedless to say, engaging the brake while the drum was spinning would be _bad idea_.\n\n####  008B Ever write comments in a non-native language?\n\n####  008C Ever physically destroy equipment from software?\n\nIt may sound funny now, but back in the days hardware wasn't as smart and it was possible to physically damage certain CRT displays by switching them into unusual modes, for example.\n\nSee also question 00A5 (HCF).\n\n####  008D Ever tried to improve your score on the Hacker Test?\n\n####  008E Do you take listings with you to lunch? (008F ... To bed?)\n\nIn the days of punch cards and paper tape, programs were not written interactively at a terminal, they were written offline, then typed into a card punch and submitted to the computer operators to be run at the next available opportunity. Eventually the operators would contact you with (if you were lucky) the completed output of your program, or (more likely) an error message. Debugging the program involved staring at a printout (\"listing\") of the program's source code, trying to puzzle out what went wrong.\n\nSuch puzzle solving counted as \"work\", but particulary dedicated hackers might keep puzzling away and neglecting more important tasks like eating or sleeping.\n\n####  0090 Ever patch a microcode bug?\n\nThe instruction sets for the very first CPUs directly mapped onto the functionality available, but newer CPUs needed to be compatible with the older CPUs while adding new functionality and redesigning the implementation to be more efficient. Most modern CPUs implement their standard instruction sets by converting each incoming instruction into one or more processor-specific _micro instructions_, so they can implement a complex instruction set without dedicating silicon to each slightly-different variant of a rarely-used instruction. A CPU's _microcode_ is the complete program that executes standard instructions by converting them to micro instructions.\n\nBecause microcode is so fundamental to a CPU's operation, it is very well tested by the manufacturer, and any errors tend to show up immediately so they are fixed quickly. That said, microcode bugs are not unheard of.\n\nMany big iron machines such as DEC PDP-10 came with a micro-assembler and the microcode source, so patching bugs and adding new instructions wasn't unheard of either.\n\n####  0091 ... around a microcode bug?\n\n####  0092 Can you program a Turing machine?\n\nA [Turing machine](https://en.wikipedia.org/wiki/Turing_machine) is a mathematical model of computation described by Alan Turing, which he used to explore what kinds of things could possibly be computed, given infinite time and resources.\n\nYou can't write a program for a Turing machine the same way you could write a program for a real machine (for one thing, it doesn't have \"instructions\" as such, just a frustratingly large set of arbitrary \"states\"), but it's instructive to think about how a Turing machine might go about simple tasks like adding numbers.\n\nProgramming in [Brainfuck](https://en.wikipedia.org/wiki/Brainfuck) is the closest you can get. For another theoretical model of computation, the [combinatory logic](https://en.wikipedia.org/wiki/Combinatory_logic), try [Unlambda](http://www.madore.org/~david/programs/unlambda/).\n\n####  0093 Can you convert postfix to prefix in your head?\n\n####  0094 Can you convert hex to octal in your head?\n\nHex is base 16, octal is base 8.\n\n####  0095 Do you know how to use a Kleene star?\n\nIn the pattern-matching syntax of regular expressions, the Kleene star means \"zero or more of the preceeding item\". For example, if the pattern `ab` matches the string \"ab\", then the pattern `ab*` would match the strings \"a\", \"ab\", \"abb\", \"abbb\", and so forth.\n\n####  0096 Have you ever starved while dining with philosophers?\n\nThe [Dining Philosophers problem](https://en.wikipedia.org/wiki/Dining_philosophers_problem) is a traditional example problem used to teach concurrent algorithm design. \n\nLet's say a bunch of philosophers are seated around a table. Each philosopher has plate of spaghetti in front of them, and between each pair of plates is a chopstick. A philosopher can be doing one of a few things:\n\n  - philosophizing, in which case they put down their chopsticks, making them available for the philosophers to their left and right\n  - waiting, either for any chopstick to become avalable, or (if they already have one) for the other chopstick to become available\n  - eating, once they have two chopsticks\n\nThe problem is to come up with a protocol for all the philosophers to follow that allows all the philosophers to eat. For example, let's say we use the rule \"take the chopstick to your left, then wait for the chopstick to your right to become available\". All the philosophers take the chopstick to their left, then wait forever because the philosopher on their right has the chopstick on their right and is waiting forever.\n\nA sufficiently sophisticated scheme can work, but people trying to solve the problem for the first time are often dismayed at how frequently one of their philosophers winds up starving.\n\n####  0097 Have you solved the halting problem? (0098 ... Correctly?)\n\nGiven a Turing machine (that is, some kind of program) and an input for that program, feeding the input into the machine and turning it on will produce one of two results: either the machine will (eventually) finish its calculation and halt, or it will get stuck in a loop and keep calculating forever. The Halting Problem is to create a Turing machine that takes another Turing machine and its input as inputs, and figures out whether that machine will halt or loop forever, without actually running it and waiting forever to see what happens.\n\nAs it turns out, Turing proved that it's not possible to solve the Halting problem, so anyone who answers \"yes\" to question 0097 will answer \"no\" to question 0098... unless they're lying.\n\nThat said, solving the halting problem for a _specific program_ or class of programs rather than an arbitrary program is possible and may be necessary to prove that it always finishes in finite time (e.g. that a mission critical system doesn't hang).\n\n####  0099 Ever deadlock trying eating spaghetti?\n\nSee question 0096.\n\nA \"deadlock\" is when two or more actors are prevented from making progress because they are each waiting for a resource another actor is using. The example from question 0096, where each philosopher takes the chopstick on their left and waits forever for the chopstick on their right, is an example of a deadlock.\n\n####  009A Ever written a self-reproducing program?\n\n####  009B Ever swapped out the swapper?\n\n####  009C Can you read a state diagram?\n\n####  009D ... Do you need one?\n\n####  009E Ever create an unkillable program?\n\n####  009F ... Intentionally?\n\n####  00A0 Ever been asked for a cookie?\n\n####  00A1 Ever speed up a system by removing a jumper?\n\nBefore hardware auto-discovery (ala Plug'n'Play) was common, users often had to use [jumpers](https://en.wikipedia.org/wiki/Jumper_(computing)) to configure their mainboards, disk drives etc. to use specific interrupts, modes and so on.\n\nMost of the time wrong arrangement of jumpers simply rendered a peripheral or the whole system unusable rather than just slow though.\n\n## Do you know...\n####  00A2 Do you know who wrote Rogue?\n\n####  00A3 ... Rogomatic?\n\n####  00A4 Do you know Gray code?\n\n####  00A5 Do you know what HCF means?\n\n[Halt and Catch Fire](http://www.catb.org/jargon/html/H/HCF.html), a CPU instruction useful for question 008C.\n\n####  00A6 ... Ever use it?\n\n####  00A7 ... Intentionally?\n\n####  00A8 Do you know what a lace card is?\n\nA punched card with every hole punched. Such cards would sometimes cause the reader to jam.\n\n####  00A9 ... Ever make one?\n\n####  00AA Do you know the end of the epoch?\n\n####  00AB ... Have you celebrated the end of an epoch?\n\n####  00AC ... Did you have to rewrite code?\n\n####  00AD Do you know the difference between DTE and DCE?\n\n####  00AE Do you know the RS-232C pinout?\n\n####  00AF ... Can you wire a connector without looking?\n\n####  00B0 Do you have a copy of Dec Wars?\n\n[DEC Wars](https://www.netfunny.com/rhf/jokes/87/14917.9.html) was a [DEC](https://en.wikipedia.org/wiki/Digital_Equipment_Corporation)-themed parody of Star Wars. It was posted on USENET, in various groups, in 1983, and was written by Alan Hastings, Steve Tarr, Dave Borman and Barak Pearlmutter.\n\n####  00B1 Do you have the Canonical Collection of Lightbulb Jokes?\n\n####  00B2 Do you have a copy of the Hacker's dictionary?\n\nA dead tree edition of an outdated version of the [Jargon File](http://www.catb.org/jargon/).\n\n####  00B3 ... Did you contribute to it?\n\n####  00B4 Do you have a flowchart template?\n\nA stencil for quckly drawing flowchart shaped on paper. Like [this](http://ferretronix.com/march/ibm_publications/ibm_flowchart_template_1.jpg).\n\n####  00B5 ... Is it unused?\n\n####  00B6 Do you have your own fortune-cookie file?\n\n[fortune](https://en.wikipedia.org/wiki/Fortune_(Unix)) is a famous Unix passtime. When invoked, it would display various funny quotes from one of several files that shipped with it or were circulated in the hacker community. Particularly dedicated hackers would, of course, have such a file of their own.\n\n####  00B7 Do you have the Anarchist's Cookbook? 00B8 ... Ever make anything from it?\n\n####  00B9 Do you own a modem?\n\n####  00BA ... a terminal?\n\n####  00BB ... a toy computer?\n\n####  00BC ... a personal computer?\n\n####  00BD ... a minicomputer?\n\nAt the time it meant a formfactor and performance class similar to VAX.\n\n####  00BE ... a mainframe?\n\nFollow this simple [guide](https://blog.mainframe.dev/2019/05/buying-ibm-mainframe.html) to answer yes.\n\n####  00BF ... a supercomputer?\n\n####  00C0 ... a hypercube?\n\nThis may be a trap question since you cannot actually own a four-dimensional object, but many supercomputers like the [Connection Machine](https://en.wikipedia.org/wiki/Connection_Machine) use a hypercube architecture, that is, consist of full mesh cells connected to one other.\n\n####  00C1 ... a printer?\n\n####  00C2 ... a laser printer?\n\n####  00C3 ... a tape drive?\n\n####  00C4 ... an outmoded peripheral device?\n\n####  00C5 Do you have a programmable calculator?\n\nProgrammable calculators like the [TI-59](https://en.wikipedia.org/wiki/TI-59_/_TI-58) were some of the earliest personal programmable devices. For many hackers, this would have been the first exposure to programming, and an occasional fun pastime.\n\nSome of them, like the [HP-16C](https://en.wikipedia.org/wiki/HP-16C) were primarily aimed at programmers, but many hackers came from other fields, such as Physics or various other branches of engineering, where handheld scientific calculators are nearly impossible to live without.\n\n####  00C6 ... Is it RPN?\n\nNotably, many of these scientific calculators used [RPN notation](https://en.wikipedia.org/wiki/Reverse_Polish_notation); in particular, HP's line of scientific calculators, which were held in highest regard, used RPN from the very beginning, starting with the [HP-35](https://en.wikipedia.org/wiki/HP-35), the first scientific handheld calculator.\n\nRPN did not become a tradition by accident or taste alone; the RPN model had a number of advantages relevant to early hardware, and implementing such a scheme in software was at the very least cleaner, if not easier. Programming languages like Lisp, Forth and PostScript used it extensively, too.\n\n####  00C7 Have you ever owned more than 1 computer? 00C8 ... 4 computers? 00C9 ... 16 computers?\n\n####  00CA Do you have a SLIP line?\n\n####  00CB ... a T1 line?\n\n####  00CC Do you have a separate phone line for your terminal/computer?\n\n####  00CD ... Is it legal?\n\n####  00CE Do you have core memory?\n\n####  00CF ... drum storage?\n\n####  00D0 ... bubble memory?\n\n####  00D1 Do you use more than 16 megabytes of disk space?\n\n####  00D2 ... 256 megabytes?\n\n####  00D3 ... 1 gigabyte?\n\n####  00D4 ... 16 gigabytes?\n\n####  00D5 ... 256 gigabytes?\n\n####  00D6 ... 1 terabyte?\n\n####  00D7 Do you have an optical disk/disk drive?\n\n####  00D8 Do you have a personal magnetic tape library?\n\n####  00D9 ... Is it unlabelled?\n\n####  00DA Do you own more than 16 floppy disks? 00DB ... 64 floppy disks? 00DC ... 256 floppy disks? 00DD ... 1024 floppy disks?\n\n####  00DE Do you have any 8-inch disks?\n\n####  00DF Do you have an internal stack?\n\n####  00E0 Do you have a clock interrupt?\n\n####  00E1 Do you own volumes 1 to 3 of _The Art of Computer Programming_?\n\n####  00E2 ... Have you done all the exercises?\n\n####  00E3 ... Do you have a MIX simulator?\n\n####  00E4 ... Can you name the unwritten volumes?\n\n####  00E5 Can you quote from _The Mythical Man-month_?\n\n####  00E6 ... Did you participate in the OS/360 project?\n\n####  00E7 Do you have a TTL handbook?\n\n####  00E8 Do you have printouts more than three years old?\n\n## Career\n####  00E9 Do you have a job?\n\n####  00EA ... Have you ever had a job?\n\n####  00EB ... Was it computer-related?\n\n####  00EC Do you work irregular hours?\n\n####  00ED Have you ever been a system administrator?\n\n####  00EE Do you have more megabytes than megabucks?\n\nBy [1985](http://www.mkomo.com/cost-per-gigabyte) hard drives were under $100/mb, so this question's a bit of a gimme.\n\n####  00EF Have you ever downgraded your job to upgrade your processing power?\n\n####  00F0 Is your job secure?\n\n####  00F1 ... Do you have code to prove it?\n\n####  00F2 Have you ever had a security clearance?\n\n## Games\n####  00F3 Have you ever played Pong?\n\n####  00F4 ... Spacewar?\n\n####  00F5 ... Star Trek?\n\n####  00F6 ... Wumpus?\n\n####  00F7 ... Lunar Lander?\n\n####  00F8 ... Empire?\n\n## Have you ever beaten\n####  00F9 ... Moria 4.8?\n\n####  00FA ... Rogue 3.6?\n\n####  00FB ... Rogue 5.3?\n\n####  00FC ... Larn?\n\n####  00FD ... Hack 1.0.3?\n\n####  00FE ... Nethack 2.4?\n\n####  00FF Can you get a better score on Rogue than Rogomatic?\n\n####  0100 Have you ever solved Adventure?\n\n####  0101 ... Zork?\n\n####  0102 Have you ever written any redcode?\n\n####  0103 Have you ever written an adventure program?\n\n####  0104 ... a real-time game?\n\n####  0105 ... a multi-player game?\n\n####  0106 ... a networked game?\n\n####  0107 Can you out-doctor Eliza?\n\n## Hardware\n####  0108 Have you ever used a light pen?\n\n####  0109 ... did you build it?\n\n## Have you ever used\n####  010A ... a teletype?\n\n####  010B ... a paper tape?\n\n####  010C ... a decwriter?\n\n####  010D ... a card reader/punch?\n\n####  010E ... a SOL?\n\n## Have you ever built\n####  010F ... an Altair?\n\n####  0110 ... a Heath/Zenith computer?\n\n## Do you know how to use\n####  0111 ... an oscilliscope?\n\n####  0112 ... a voltmeter?\n\n####  0113 ... a frequency counter?\n\n####  0114 ... a logic probe?\n\n####  0115 ... a wirewrap tool?\n\n####  0116 ... a soldering iron?\n\n####  0117 ... a logic analyzer?\n\n####  0118 Have you ever designed an LSI chip?\n\n####  0119 ... has it been fabricated?\n\n####  011A Have you ever etched a printed circuit board?\n\n## Historical\n####  011B Have you ever toggled in boot code on the front panel?\n\n####  011C ... from memory?\n\n####  011D Can you program an Eniac?\n\n####  011E Ever seen a 90 column card?\n\n## IBM\n####  011F Do you recite IBM part numbers in your sleep?\n\n####  0120 Do you know what IBM part number 7320154 is?\n\n####  0121 Do you understand 3270 data streams?\n\nIBM 3270 was a block-oriented rather than a character-oriented video terminal, much harder to communicate with than a VT100.\n\n####  0122 Do you know what the VM privilege classes are?\n\n####  0123 Have you IPLed an IBM off the tape drive?\n\nIPL = Initial Program Loader, the mainframe for a bootloader. You can experience it for yourself in the [Hercules](http://www.hercules-390.org/) emulator.\n\n####  0124 ... off a card reader?\n\n####  0125 Can you sing something from the IBM Songbook?\n\n## Languages\n####  0126 Do you know more than 4 programming languages? 0127 ... 8 languages? 0128 ... 16 languages? 0129 ... 32 languages?\n\n####  012A Have you ever designed a programming language?\n\n####  012B Do you know what Basic stands for?\n\n####  012C ... Pascal?\n\n####  012D Can you program in Basic?\n\n####  012E ... Do you admit it?\n\n####  012F Can you program in Cobol?\n\n####  0130 ... Do you deny it?\n\n####  0131 Do you know Pascal?\n\n####  0132 ... Modula-2?\n\n####  0133 ... Oberon?\n\n####  0134 ... More that two Wirth languages?\n\n####  0135 ... Can you recite a Nicklaus Wirth joke?\n\nA well-known one: \"you can call me by name, Niklaus Wirth, or by value, Nickels Worth\".\n\n####  0136 Do you know Algol-60?\n\n####  0137 ... Algol-W?\n\n####  0138 ... Algol-68?\n\n####  0139 ... Do you understand the Algol-68 report?\n\nAlgol-68 is a vastly more complex language than the simple Algol-60. That report is a _long_ read.\n\n####  013A ... Do you like two-level grammars?\n\n####  013B Can you program in assembler on 2 different machines?\n\n####  013C ... on 4 different machines?\n\n####  013D ... on 8 different machines?\n\n## Do you know\n####  013E ... APL?\n\n####  013F ... Ada?\n\n####  0140 ... BCPL?\n\n####  0141 ... C++?\n\n####  0142 ... C?\n\n####  0143 ... Comal?\n\n####  0144 ... Eiffel?\n\n####  0145 ... Forth?\n\n####  0146 ... Fortran?\n\n####  0147 ... Hypertalk?\n\n####  0148 ... Icon?\n\n####  0149 ... Lisp?\n\n####  014A ... Logo?\n\n####  014B ... MIIS?\n\n####  014C ... MUMPS?\n\n####  014D ... PL/I?\n\n####  014E ... Pilot?\n\n####  014F ... Plato?\n\n####  0150 ... Prolog?\n\n####  0151 ... RPG?\n\n####  0152 ... Rexx (or ARexx)?\n\n####  0153 ... SETL?\n\n####  0154 ... Smalltalk?\n\n####  0155 ... Snobol?\n\n####  0156 ... VHDL?\n\n####  0157 ... any assembly language?\n\n####  0158 Can you talk VT-100?\n\n####  0159 ... Postscript?\n\n####  015A ... SMTP?\n\n####  015B ... UUCP?\n\n####  015C ... English?\n\n## Micros\n####  015D Ever copy a copy-protected disk?\n\n####  015E Ever create a copy-protection scheme?\n\n####  015F Have you ever made a \"flippy\" disk?\n\nThe standard [5.25\" floppy\ndisk](http://www.obsoletemedia.org/5-25-inch-minifloppy-disk/) (called a\n\"minifloppy\" at the time, to distinguish it from the larger 8\" disks that\npreceeded it) could be *single-sided* or *double-sided*.\n\nA single-sided disk could be read and written only on one side, while a\ndouble-sided disk could be read and written on both sides.  (If the drive\nitself didn't have two read/write heads, you'd have to actually take the\ndisk out and flip it over to read the other side.)\n\nDisks were expensive in those days, and single-sided disks were often\nsignificantly cheaper than double-sided ones.  However, it was often possible\nto convert a single-sided disk to a double-sided one by the simple expedient\nof cutting out a notch on the other side of the disk sleeve.\n\nThese notches were used to tell the drive whether or not the disk was\nwritable.  For a single-sided disk, there was only one notch, so when it\nwas flipped over, the disk could not be written to.\n\nA \"flippy\" disk was simply a single-sided floppy disk that had an extra notch\ncut out on the other side, effectively converting it to a double-sided disk.\nThis could be a real money-saver, provided you didn't accidentally cut\nthe disk itself while you were cutting out the new notch...\n\n####  0160 Have you ever recovered data from a damaged disk?\n\n####  0161 Ever boot a naked floppy?\n\n## Networking\n####  0162 Have you ever been logged in to two different timezones at once?\n\n####  0163 Have you memorized the UUCP map for your country?\n\n####  0164 ... For any country?\n\n####  0165 Have you ever found a sendmail bug?\n\n####  0166 ... Was it a security hole?\n\n####  0167 Have you memorized the HOSTS.TXT table?\n\n####  0168 ... Are you up to date?\n\n####  0169 Can you name all the top-level nameservers and their addresses?\n\n####  016A Do you know RFC-822 by heart?\n\n####  016B ... Can you recite all the errors in it?\n\n####  016C Have you written a Sendmail configuration file? 016D ... Does it work?\n\nSendmail was infamous for the complexity of its configuration file format. It's complex enough to be [accidentally Turing-complete](http://okmij.org/ftp/Computation/index.html#sendmail-Turing).\n\n####  016E ... Do you mumble \"defocus\" in your sleep?\n\n####  016F Do you know the max packet lifetime?\n\n## Operating systems\n## Can you use\n####  0170 ... BSD Unix?\n\n####  0171 ... non-BSD Unix?\n\n####  0172 ... AIX\n\n####  0173 ... VM/CMS?\n\nKnown as [z/VM](https://www.ibm.com/it-infrastructure/z/zvm) now. Originally it included the hypervisor (VM) and a small, single-user guest OS named CMS (Conversational Monitor System). A CMS virtual machine would be spawned for every user who logged in, much like Virtual Desktop Infrastructure solutions today.\n\n####  0174 ... VMS?\n\nKnown as OpenVMS now. A VAX version can run in the [SIMH](http://simh.trailing-edge.com/).\n\n####  0175 ... MVS?\n\nKnown as [z/OS](https://en.wikipedia.org/wiki/Z/OS) these days. MVS 3.8j is available free of charge and runs in Hercules.\n\n####  0176 ... VSE?\n\nAlso known as DOS/360 at some point. A mainframe OS for people who couldn't afford MVS. Still exists as [z/VSE](https://www.ibm.com/it-infrastructure/z/zvse).\n\n####  0177 ... RSTS/E?\n\n####  0178 ... CP/M?\n\n####  0179 ... COS?\n\n####  017A ... NOS?\n\n####  017B ... CP-67?\n\n####  017C ... RT-11?\n\n####  017D ... MS-DOS?\n\n####  017E ... Finder?\n\n####  017F ... PRODOS?\n\n####  0180 ... more than one OS for the TRS-80?\n\n####  0181 ... Tops-10?\n\n####  0182 ... Tops-20?\n\n####  0183 ... OS-9?\n\n####  0184 ... OS/2?\n\n####  0185 ... AOS/VS?\n\n####  0186 ... Multics?\n\n####  0187 ... ITS?\n\n####  0188 ... Vulcan?\n\n####  0189 Have you ever paged or swapped off a tape drive?\n\n####  018A ... Off a card reader/punch?\n\n####  018B ... Off a teletype?\n\n####  018C ... Off a networked (non-local) disk?\n\n####  018D Have you ever found an operating system bug?\n\n####  018E ... Did you exploit it?\n\n####  018F ... Did you report it?\n\n####  0190 ... Was your report ignored?\n\n####  0191 Have you ever crashed a machine?\n\n####  0192 ... Intentionally?\n\n## People\n####  0193 Do you know any people? 0194 ... more than one? 0195 ... more than two?\n\n## Personal\n####  0196 Are your shoelaces untied?\n\n####  0197 Do you interface well with strangers?\n\n####  0198 Are you able to recite phone numbers for half-a-dozen computer systems\n\n####  0199 ... but unable to recite your own?\n\n####  019A Do you log in before breakfast?\n\n####  019B Do you consume more than LD-50 caffeine a day?\n\n####  019C Do you answer either-or questions with \"yes\"?\n\n####  019D Do you own an up-to-date copy of any operating system manual?\n\n####  019E ... every operating system manual?\n\n####  019F Do other people have difficulty using your customized environment?\n\n####  01A0 Do you dream in any programming languages?\n\n####  01A1 Do you have difficulty focusing on three-dimensional objects?\n\n####  01A2 Do you ignore mice?\n\n####  01A3 Do you despise the CAPS LOCK key?\n\n####  01A4 Do you believe menus belong in restaurants?\n\n####  01A5 Do you have a Mandelbrot hanging on your wall?\n\n####  01A6 Have you ever decorated with magnetic tape or punched cards?\n\n####  01A7 Do you have a disk platter or a naked floppy hanging in your home?\n\n####  01A8 Have you ever seen the dawn?\n\n####  01A9 ... Twice in a row?\n\n####  01AA Do you use \"foobar\" in daily conversation?\n\n####  01AB ... \"bletch\"?\n\n####  01AC Do you use the \"P convention\"?\n\nCommon Lisp and some other languages use the \"p\" suffix for predicates, e.g. `(numberp 42)`. Newer lisps like Scheme and Clojure usually go with more intuitive \"?\" instead, like `(string? \"foo\")`.\n\nAccording to the [jargon file](http://catb.org/jargon/html/p-convention.html), some Lisp programmers also used it in conversations.\n\n####  01AD Do you automatically respond to any user question with RTFM?\n\n####  01AE ... Do you know what it means?\n\n####  01AF Do you think garbage collection means memory management?\n\n####  01B0 Do you have problems allocating horizontal space in your room/office?\n\n####  01B1 Do you read Scientific American in bars to pick up women?\n\n####  01B2 Is your license plate computer-related?\n\n####  01B3 Have you ever taken the Purity test?\n\n####  01B4 Ever have an out-of-CPU experience?\n\n####  01B5 Have you ever set up a blind date over the computer?\n\n####  01B6 Do you talk to the person next to you via computer?\n\n## Programming\n####  01B7 Can you write a Fortran compiler?\n\n####  01B8 ... In TECO?\n\n####  01B9 Can you read a machine dump?\n\n####  01BA Can you disassemble code in your head?\n\n## Have you ever written\n####  01BB ... a compiler?\n\n####  01BC ... an operating system?\n\n####  01BD ... a device driver?\n\n####  01BE ... a text processor?\n\n####  01BF ... a display hack?\n\n####  01C0 ... a database system?\n\n####  01C1 ... an expert system?\n\n####  01C2 ... an edge detector?\n\n####  01C3 ... a real-time control system?\n\n####  01C4 ... an accounting package?\n\n####  01C5 ... a virus?\n\n####  01C6 ... a prophylactic?\n\n####  01C7 Have you ever written a biorhythm program?\n\n####  01C8 ... Did you sell the output?\n\n####  01C9 ... Was the output arbitrarily invented?\n\n####  01CA Have you ever computed pi to more than a thousand decimal places?\n\n####  01CB ... the number e?\n\n####  01CC Ever find a prime number of more than a hundred digits?\n\n####  01CD Have you ever written self-modifying code?\n\n####  01CE ... Are you proud of it?\n\n####  01CF Did you ever write a program that ran correctly the first time?\n\n####  01D0 ... Was it longer than 20 lines?\n\n####  01D1 ... 100 lines?\n\n####  01D2 ... Was it in assembly language?\n\n####  01D3 ... Did it work the second time?\n\n####  01D4 Can you solve the Towers of Hanoi recursively?\n\n####  01D5 ... Non-recursively?\n\n####  01D6 ... Using the Troff text formatter?\n\n####  01D7 Ever submit an entry to the Obfuscated C code contest?\n\n####  01D8 ... Did it win?\n\n####  01D9 ... Did your entry inspire a new rule?\n\n####  01DA Do you know Duff's device?\n\nIn the C programming language, [Duff's device](https://en.wikipedia.org/wiki/Duff%27s_device) is a way of manually implementing loop unrolling by interleaving two syntactic constructs of C: the do-while loop and a switch statement. \n\n####  01DB Do you know Jensen's device?\n\n[Jensen's device](https://en.wikipedia.org/wiki/Jensen%27s_device) is a computer programming technique that exploits call by name (in ALGOL-60).\n\n####  01DC Ever spend ten minutes trying to find a single-character error? 01DD ... More than an hour? 01DE ... More than a day? 01DF ... More than a week? 01E0 ... Did the first person you show it to find it immediately?\n\n## Unix\n####  01E1 Can you use Berkeley Unix?\n\n####  01E2 .. Non-Berkeley Unix?\n\n####  01E3 Can you distinguish between sections 4 and 5 of the Unix manual?\n\n####  01E4 Can you find TERMIO in the System V release 2 documentation?\n\n####  01E5 Have you ever mounted a tape as a Unix file system?\n\n####  01E6 Have you ever built Minix?\n\n####  01E7 Can you answer \"quiz function ed-command\" correctly?\n\n####  01E8 ... How about \"quiz ed-command function\"?\n\n## Usenet\n####  01E9 Do you read news?\n\n\"News\" or \"Netnews\" is (but, sadly, mostly *was*) a worldwide collection of\n\"bulletin-board\" style discussion system.  Discussions were organized into\nconversations and conservations were organized into various *newsgroups*.\n\nDifferent sites (usually, large shared computers) would\ntransfer collections of conversations among each other using the\nUnix-to-Unix Copy ([UUCP](https://en.wikipedia.org/wiki/UUCP))\nmechanism and, later, the Network News Transfer Protocol\n([NNTP](https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol)).\n\n(Other mechanisms, like the venerable\n[FidoNet](https://en.wikipedia.org/wiki/FidoNet), were also used, but\nmore rarely.)\n\nNews was usually distributed on a site-by-site basis: one site would connect\nto another, transfer all of its new articles, and then disconnect. The\ncalled site would then call other sites and distribute the news, and so on\n\n(Other mechanisms, like the venerable\n[FidoNet](https://en.wikipedia.org/wiki/FidoNet), were also used, but\nmore rarely.)\n\nNews was usually distributed on a site-by-site basis: one site would connect\nto another, transfer all of its new articles, and then disconnect. The\ncalled site would then call other sites and distribute the news, and so on.\n\nNewsgroups were organized into a hierarchy, with names like\n\"comp.lang.python\" for Python programming language-related\ndiscussions. When the Internet became more open, many newsgroups\nwere renamed in an action that became known as [The Great\nRenaming](http://www.catb.org/jargon/html/G/Great-Renaming.html).\n\nThe collection of all sites that participated in the distribution\nof public netnews became known as \"Usenet\".  Usenet was\ndistinct from (though it connected with at some points) the\n[ARPANET](https://en.wikipedia.org/wiki/ARPANET). Unlike the ARPANET (and\nthe nascent Internet at the time), Usenet was ostensibly open to the public:\nall that was required was one of the sites let you connect and transfer\nnews articles.\n\nUsenet was the first taste of what would become \"the Internet\" for many\npeople, and originated many terms that are still in use today: \"spam\",\n\"flame\", and \"FAQ\".\n\n####  01EA ... More than 32 newsgroups?\n\nUsers could subscribe to as many newsgroups as they liked.  In the early\ndays of Usenet, 32 would not be considered an unsual number, but after\nthe rise of the Internet, 32 might be considered \"a lot\".\n\n####  01EB ... More than 256 newsgroups?\n\n256 newsgroups would be a lot of newsgroups at any point in history.\n\n####  01EC ... All the newsgroups?\n\nUnless you were acting as a distribution site, archivist, aggregator,\nor are [KIBO](http://www.catb.org/jargon/html/K/KIBO.html) himself, it\nwould be unusual to subscribe to *all* the newsgroups.\n\n####  01ED Have you ever posted an article?\n\n####  01EE ... Do you post regularly?\n\n####  01EF Have you ever posted a flame?\n\n####  01F0 ... Ever flame a cross-posting?\n\n####  01F1 ... Ever flame a flame?\n\n####  01F2 ... Do you flame regularly?\n\n####  01F3 Ever have your program posted to a source newsgroup?\n\n####  01F4 Ever forge a posting?\n\n####  01F5 Ever form a new newsgroup?\n\n####  01F6 ... Does it still exist?\n\n####  01F7 Do you remember\n\n####  01F8 ... mod.ber?\n\n####  01F9 ... the Stupid People's Court?\n\n####  01FA ... Bandy-grams?\n\n## Phreaking\n####  01FB Have you ever built a black box?\n\nBack when telephone switches (the computers that control the telephone\nnetwork) worked on mechanical electical relays, they would use a change\nin voltage on a phone line to determine when the phone had been picked\nup. When a phone was on-hook, the voltage would be different than when it\nwas off-hook.\n\nThe billing for a call would only begin when the receiver answered the\nphone by taking it off the hook. A \"black box\" was a simple electical\ndevice that, when attached to a phone, would prevent the associated drop\nin voltage and thus prevent the call from being billed.\n\n####  01FC Can you name all of the 'colors' of boxes? (01FD ... and their associated functions?)\n\nOther devices were often constructed to manipulate the phone network.\nBy analogy with the black box above, they were often named after colors.\nCommon colors of \"boxes\" in the phreaking community included:\n\n- black - prevent incoming calls from being billed\n- blue - simulated a telephone operator's console\n- green - manipulated payphones (but only from the phone called by the payphone)\n- red - simulated the insertion of coins into a payphone\n- beige - acted as a [lineman's handset](https://en.wikipedia.org/wiki/Lineman%27s_handset)\n- clear - allowed the use of post-pay payphones without paying\n- gold - allowed the bridging of two phone lines\n- magenta - generated a ring signal (usually not used on its own)\n- orange - [spoofs caller ID](https://en.wikipedia.org/wiki/Caller_ID_spoofing)\n           information\n- vermillion - a combination of a magenta and orange box\n- violet - simulate a phone being off-hook\n- silver - used to simulate the DTMF tones on the Defense Switched Network\n           (the now obsolete phone network used by the United States\n            Department of Defense)\n\nThe use of \"colored box\" terminology expanded outside the phreaking community\nto be applied to other devices that were used to manipulate systems.\nFor example, the \"chrome box\" was used to manipulate traffic signals\n(\"traffic lights\").\n\n####  01FE Does your touch tone phone have 16 DTMF buttons on it?\n\nDTMT is \"Dual-Tone Multi-Frequency\", and is the mechanism by which\n\"touch-tone\" phones originally operated. The buttons on a phone were arranged\nin a grid pattern; consumer phones had four rows and three columns. When\npressed, two tones (corresponding to the row and the column pushed) would\nbe generated. The telephone switch (the computer responsible for connecting\nphones to the phone network) would recognize these tones as numbers and\nother symbols and complete the call.\n\nOperator sets (that is, phone keypads used by operators of the telephone\nnetwork) had an additional four buttons, meaning sixteen total. These\nfour buttons produced additional tones that were recognized by telephone\nswitches and performed special operator-only functions like initiating\nfree long-distance calls to other stations.\n\nThe phone network for many years solely used [in-band\nsignalling](https://en.wikipedia.org/wiki/In-band_signaling) and as a result,\nanyone who could generate the appropriate tones could act as \"operators\"\non the phone network.\n\nThe phone network eventually evolved to not recognize\ncertain tones on certain lines, meaning that this practice\ncame to an end. Essentially all telephone networks today use [out-of-band\nsignalling](https://en.wikipedia.org/wiki/Signaling_%28telecommunications%29#In-band_versus_out-of-band_signaling),\nmeaning that similar tricks today cannot work.\n\n####  01FF Did the breakup of Ma Bell create more opportunities for you?\n\n\"Ma Bell\" (\"ma\" meaning \"mother\" in this case) was an\naffectionate nickname for the [American Telephone and Telegraph\nCompany](https://en.wikipedia.org/wiki/AT%26T_Corporation), which was the\nfinal corporate identity of the original National Bell Telephone Company\n(itself a merger between the Bell Telphone Company and the New England\nTelephone and Telegraph Company).\n\nAT\u0026T owned and operated many interlinked regional telephone companies\n(referred to as the \"Bell System\") in the United States and Canada. These\ncompanies together held a practical monopoly on phone service in the United\nStates and Canada for most of the 20th Century.\n\nIn 1974, the United States federal government opened an investigation into\nAT\u0026T's monopolistic practices. After a decade in court, AT\u0026T settled with\nthe government and split itself into seven Regional Bell Operating Companies\n(RBOCs), themselves affectionally known as \"Baby Bells\".\n\n(Funnily enough, four of the original seven Baby Bells were eventually\n**re**acquired by AT\u0026T over the course of the 90's and early 2000's.)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhwayne%2Fhacker-test-history","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhwayne%2Fhacker-test-history","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhwayne%2Fhacker-test-history/lists"}