The original version of this document resides at
- Added Cron section on 11/5/03
- Added Shell Portability section
- Updated and expanded the Perl and
mod_perl sections on 9/23/02
- Updated and expanded the Python section
- Added Forth section on 10/31/02
- Updated and expanded the Shells section on 10/31/02
- Updated and expanded the Ruby section on 10/31/02
- Updated and expanded the Samba section
- Updated and expanded the Scheme section
- Updated and expanded the SCSI section
- Updated and expanded the sed section
- Updated and expanded the Smalltalk section
- Updated and expanded the Filesystems section and
added File Undeletion,
and XFS subsections on 11/12/02
- Updated and expanded the Sockets section on 11/13/02
- Updated and expanded the SQL section on 11/13/02
- Updated and expanded the Tcl/Tk section on 11/13/02
- Updated and expanded the Standard ML section on 11/13/02
- Updated and expanded the STL section on 11/13/02
- Updated and expanded the TCP/IP section on 11/13/02
- Updated and expanded the Apache section on 11/14/02
- Expanded and categorized the Shells section on 11/14/02
- Updated and expanded the CVS section on 11/15/02
- Updated and expanded the Regular Expressions section on 11/15/02
- Created an assembly language section on 11/15/02
- Updated and expanded the SMP section on 11/18/02
- Updated and expanded the Multibooting section on 11/18/02
- Updated and expanded the Kernel section on 11/19/02
- Updated and expanded the Make section on 11/20/02
- Updated and expanded the Prolog section on 11/20/02
- Updated and expanded the Rexx section on 11/20/02
- Updated and expanded the RPC section on 11/20/02
- Updated and expanded the Multimedia section on 12/2/02
- Updated and expanded the Backups section on 12/4/02
- Updated and expanded the Email section on 12/5/02
- Updated and expanded the Printing section on 12/5/02
- Created Little Languages section on 12/6/02
- Created Eiffel section on 12/7/02
- Updated and expanded the Emacs section on 12/8/02
- Created Mixed Language Programming section on 12/10/02
- Updated and expanded the vi section on 3/27/03
- Updated and expanded the Networking section on 3/27/03
- Added netfilter/iptables subsection to
Firewalls subsection on 3/27/03
- Updated and expanded the Multicast subsection on 3/27/03
- Added a PPTP subsection on 3/27/03
- Updated and expanded the Routers and Routing subsection on 3/27/03
- Updated and expanded the Telephone Modems subsection on 3/27/03
- Updated and expanded the UUCP subsection on 3/27/03
- Updated and expanded the VPN subsection on 3/27/03
- Updated and expanded the Ethernet subsection on 3/27/03
- Added Wireless subsection to Networking
section on 3/27/03
The original version of this document resides at
Booting and System Initialization:
Other Boot Loaders:
- OpenMosix - Daniel Robbins
Dual Booting: Windows XP and Red Hat Linux 7.3 - Bill
Moss (Jun. 2002)
Windows XP Dual Boot Tip Page
Linux + Windows ME dual boot:
Linux + Solaris mini-HOWTO - Max Berger (4/00)
How to Dual Boot Linux and Solaris
Loadlin + Win95/98/ME mini-HOWTO - Chris Fischer (2/01)
Linux Remote Boot mini-HOWTO: Configuring Remote Boot Workstations with
Linux, DOS, Windows 95/98 and Windows NT - Marc Stuckelberg and
David Clerc (2/99)
X Display Manager Repair and Removal Pre-Shrunk Ultra-Mini HOWTO - Karsten
Taming the X Display Manager - Miles O'Neal (7/96)
Xdm: Advanced Topics - Alexander Leidinger (12/00)
Configuring a Cron Task - Red Hat 7.2 Manual
Doing Things Periodically Using Cron - Erik Forsberg
Cron Help Guide
Automating Tasks with Cron and Crontab Files - Linux Administration Made Easy
Optimizing Applications with the Intel C++ and Fortran Compilers for Windows
GCC/Absoft F90 vs. Intel ICC/IFC - Michael Sabielny (Aug. 2002)
Linking LAPACK and SLATEC with IFC for Linux
Can be installed from FreeBSD, Linux or DOS, and can
boot *BSD or Linux from the end
(greater than 8 Gb) of a single hard drive or from a second or later
Can boot OSs installed in primary and extended partitions on
any available hard disk.
Supports and can be installed from nearly all OSs, e.g. OS/2,
Windows, Linux DOS, *BSD, SCO, etc.
Designed to avoid BIO limitations by not using the BIOS, i.e. can be used
to boot from any place on a hard drive up to 137 Gb.
Works with the ext2 filesystem and IDE drives.
Uses something called UltraIO to "work with almost all x86 PCs,
operating systems and partition types."
The installation requirements are a PC clone, a hard disk and a
single FAT partition.
"Absolutely OS independent."
A boot loader that operates off an MS-DOS/Windows FAT filesystem, i.e.
it can (only) boot Linux from a FAT filesystem.
A kernel module that allows Linux to boot another kernel image into RAM
and restart the machine from that kernel.
Officially supoprts DOS, FreeBSD and Linux.
Supports BeOS, MS-DOS, FreeDOS, Linux (with LILO), Solaris,
VxWorks 5.x, Windows 95/98/ME, Windows NT/2000 and "others."
This also has many features not found in other freely available
Using Mondorescue for Linux Backups - CCP14
Discs (hard drives, CDs, floppies, Zips, etc.)
Sample Chapter: Process Scheduling
Kernel Hacking HOWTO - Andrew Ebling (Mar. 2002)
Linux Kernel Hackers' Guide
Upgrading to the 2.4.x Kernel - Amit Chattopadhyay (Feb. 2001)
Meet the 2.4 Linux Kernel - T. W. Burger
Linux Kernel Configuration Help Texts
A Beginner's Guide to Effective Email - Kaitlin Sherwood
Linux Mail User HOWTO - Eric Raymond (2000)
Linux Electronic Mail Administrator HOWTO - Guylhem Aznar (Jan. 2000)
Teaching Your Email to Fetch - Kevin Mullet (Oct. 2000)
Scalable Webmail HOW-TO - Jason Belich (Aug. 1999)
- Mail User Agents (MUA):
- Mail Transfer Agents (MTA):
"MAP stands for Internet Message Access Protocol. It is a method of
accessing electronic mail or bulletin board messages that are kept on
a (possibly shared) mail server. In other words, it permits a "client"
email program to access remote message stores as if they were local.
For example, email stored on an IMAP server can be manipulated from a
desktop computer at home, a workstation at the office, and a
notebook computer while traveling, without the need to transfer messages
or files back and forth between these
compuuters." - What is IMAP?
"Lightweight Directory Access Protocol (LDAP) is an open-standard
protocol for accessing X.500 directory services. The protocol runs
over Internet transport protocols, such as TCP. LDAP is a lightweight
alternative to the X.500 Directory Access Protocol (DAP) for use on the
Internet. It uses TCP/IP stack verses the
overly complex OSI stack. It also has other simplications, such as the
representing most attribute values and many protocol items as
textual strings, that are designed to
make clients easier to implement." -
The complete text of the configuration help files for kernels
1.2.x through 2.2.x.
Index of Documentation for People Interested in Writing and/or
Understanding the Linux Kernel - Juan-Mariano de Goyeneche (Feb. 2002)
Devices and Device Drivers:
The Linux Network Administrator's Guide - Olaf Kirch and Terry Dawson (Mar. 2000)
Introduction to TCP/IP
Configuring the Networking Hardware (PLIP, PPP, SLIP)
Configuring the Serial Hardware (modems, tty)
Configuring TCP/IPi (Ethernet)
Name Service and Resolver Configuration (DNS and BIND)
Serial Line IP (SLIP)
The Point-to-Point Protocol (PPP)
TCP/IP Firewall (ipchains, iptables, netfilter)
IP Masquerade and Network Address Translation (NAT)
Important Network Features (inetd, tcpd, RPC, rlogin, ssh)
The Network Information System (NIS)
The Network File System (NFS)
IPX and the NCP Filesystem (NetWare)
Managing Taylor UUCP
Electronic Mail (elm)
Getting Exim Up and Running
NNTP and the nntp Daemon
Internet News (INN)
Newsreader Configuration (tin, trn, nn)
Linux Networking Overview HOWTO - Daniel L. Ridruejo (Jul. 2000)
Home Network Mini-HOWTO: RedHat as an Internet Gateway for a Home Network - Paul Ramsey (Jun. 2000)
IP Sub-Networking Mini-HOWTO - Robert Hart (Aug. 2001)
Setting Up IP Aliasing on a Linux Machine Mini-HOWTO - Harish Pillay (Jan. 2001)
- Cable Modems:
Resources for DHCP
DHCP Mini-HOWTO - Vladimir Vuksan (Oct. 2000)
Linux and DHCP - James Andrews
Linux Troubleshooters: DHCP - Steve Litt (1999)
Installing and Using the DHCP - Alpha Centauri
The ISC's DHCP Distribution - Ted Lemon (Jun. 1998)
NetBSD DHCP How-To (Oct. 2002)
FreeBSD DHCP - Greg Sutter
Linux DHCP Configuration and IP Masquerade
"Explores important network design
issues for today's modern mixed intranets. The authors
discuss many different platforms, including
Windows 95, Windows 98, Windows NT, OS/2 Warp, OS/2 Warp Server,
AIX, Macintosh, WorkSpace
On-Demand, Linux, Solaris, and others. The [536 page] book examines how
to connect these systems in a reliable,
flexible, high-performance TCP/IP network."
Cisco IOS DHCP Server Manual
Integrating UNIX and NT Technology: DHCP - Emmett Dulaney et al. (Jun. 1999)
"The DNS directory service consists of DNS data, DNS servers, and Internet
protocols for fetching data from the servers. The billions of resource
records in the DNS directory are split into millions of files called zones. Zones
are kept on authoritative servers distributed all over the Internet,
which answer queries according to the DNS network protocols. In contrast, caching
servers simply query the authoritative servers and cache any
replies. Most servers are authoritative for some zones and perform a caching
function for all other DNS information. Most DNS servers are
authoritative for just a few zones, but larger servers are authoritative for
tens of thousands of zones." -
What is DNS?
" The term Ethernet refers to the family of local-area network (LAN)
products covered by the IEEE 802.3 standard that defines what is
commonly known as the CSMA/CD protocol."
" The original Ethernet was developed as an experimental coaxial cable network in the
1970s by Xerox Corporation to operate with a data rate of 3 Mbps using a carrierxi
sense multiple access collision detect (CSMA/CD) protocol for LANs with sporadic butxi
occasionally heavy traffic requirements. Success with that project attracted early attentionxi
and led to the 1980 joint development of the 10-Mbps Ethernet Version 1.0 specificationxi
by the three-company consortium: Digital Equipment Corporation, Intel Corporation,xi
and Xerox Corporation." -
Internetworking Technology Handbook: Ethernet
Firewall and Proxy Server HOWTO - Mark Grennan (Feb. 2000)
Netfilter is the system compiled into the kernel which provides hooks into the IP stack
which loadable modules (e.g. iptables) can use to perform operations on packets.
IPTables consists of two parts: user-space tools and kernel-space modules.
The latter are distributed with the kernel, and include the main ip_tables module
as well as modules for NAT, logging, connection tracking, etc.
The former takes the form of the iptables binary, distributed separately from
the kernel and used to add, remove or edit rules for the various modules.
The netfilter/iptables project is the Linux 2.4.x / 2.5.x firewalling subsystem.
It delivers you the functionality of packet filtering (stateless or stateful),
all different kinds of NAT (Network Address Translation) and packet mangling.
An Introduction to Using Linux as a Multipurpose Firewall - Jeff Regan (Mar. 2003)
Transparent Firewalling - Federico and Christian Pellegrin (Mar. 2003)
Building a Firewall with IP Chains - Pedro Bueno (Mar. 2003)
Linux Firewall Survey, Part 1: Open Source Product Roundup - Pawel Leszek (1998-2003)
Auditing Your Firewall Setup - Lance Spitzner (Mar. 2000)
- Installing a Firewall - Sam Mikes and Danielle Michaels
" Internet Protocol (IP) multicast is a
bandwidth-conserving technology that reduces traffic by simultaneously
delivering a single stream of information to thousands of corporate
recipients and homes. Applications that take advantage of multicast
include videoconferencing, corporate communications, distance learning,
and distribution of software, stock quotes, and news." -
"Short for Point-to-Point Tunneling Protocol, a new technology for
creating Virtual Private Networks (VPNs) , developed jointly by
Microsoft Corporation, U.S. Robotics, and several remote access vendor
companies, known collectively as the PPTP Forum. A VPN is a private
network of computers that uses the public Internet to connect some
nodes. Because the Internet is essentially an open network, the
Point-to-Point Tunneling Protocol (PPTP) is used to ensure that
messages transmitted from one VPN node to another are secure. With
PPTP, users can dial in to their corporate network via the Internet." -
- Routers and Routing:
- Telephone Modems:
"Short for Unix-to-Unix Copy, a Unix utility and protocol that enables one computer
to send files to another computer over a direct serial connection or via modems
and the telephone system. For most file transfer applications, UUCP has been
superseded by other protocols, such as FTP, SMTP and
NNTP." - Webopedia
- VPN (Virtual Private Network):
"A private data network that makes use of the public telecommunication infrastructure,
maintaining privacy through the use of a tunneling protocol and security
procedures." - VPNC Glossary
The original version of this document resides at
Polyglot Emacs 20.4 - Jon Babcock (Mar. 1999)
Emacs for vi Users
- Installation and Getting Started
Apache 1.3 FAQ
Apache 2.0 FAQ
Apache Tutorial - KPLUG
Official Apache 1.3 Documentation
Official Apache 2.0 Documentation
Apache Server Survival Guide - Manuel Ricart
Apache Debugging Guide (1999-2002)
URL Rewriting with Apache - Ralf Engelschall
- Apache Guide:
Using Apache with Suexec on Linux - Ken Coar (Jan. 2000)
Using .htaccess Files with Apache - Ken Coar (2000)
Adding PHP to Apache on Linux - Ken Coar (1999)
Using the Apache CVS Repository - Ken Coar (2000)
The Apache Web Server Documentation Project - Ken Coar (2000-2001)
Perchild: Setting Users and Groups per Virtual Host - Kevin Reichard (Aug. 2000)
Keeping Your Images from Adorning Other Sites - Ken Coar (Jun. 2000)
Filtering I/O in Apache 2.0 - Part 1 - Ryan Bloom (Sep. 2000)
Filtering I/O in Apache 2.0 - Part 2 - Ryan Bloom (Oct. 2000)
- Apache modules:
Apache 2.0 Module Index
Apache Module API - Robert Thau
Writing Apache Modules with Perl and C - Lincoln Stein and Doug MacEachern (Apr. 1999)
Introduction to Programming for the Apache API - Sameer Parekh
"Why is AWK so important? It is an excellent filter and report writer.
Many UNIX utilities generates rows and columns of information. AWK is
an excellent tool for processing these rows and columns, and is easier
to use AWK than most conventional programming languages. It can be
considered to be a pseudo-C interpretor, as it understands the same
arithmatic operators as C. AWK also has string manipulation functions, so it
can search for particular strings and modify the output. AWK also has
associative arrays, which are incredible useful, and is a feature most
computing languages lack. Associative arrays can make a complex problem a
trivial exercise." - Bruce Barnett (from
- Advanced C++:
CSS stands for Cascading Style Sheets and is a simple styling language which
allows attaching style to HTML elements. Every element type as well as every
occurance of a specific element within that type can be declared an unique
style, e.g. margins, positioning, color or size.
- Specific/Advanced Topics:
EMACS: The Extensible, Customizable Display Editor - Richard Stallman
Multics Emacs: The History, Design and Implementation - Bernard
Greenberg (1979, 1996)
Emacs Tips - Alan Wehmann (Jul. 2001)
Emacs: The Software Engineer's ``Swiss Army Knife'' - Norman Matloff (Nov. 1997)
A Tutorial Introduction to Emacs - Keith Waclena (Jun. 1997)
The Get to Know Your Emacs Guide - Shai Shen-Orr
"IEEE 754-1985 governs binary floating-point arithmetic. It specifies number formats, basic
operations, conversions, and exceptional conditions. The related standard IEEE 854-1987
generalizes 754 to cover decimal arithmetic as well as binary." - IEEE 754 Group
"The Inter-Language Unification system (ILU) is a multi-language object interface system.
The object interfaces provided by ILU hide implementation distinctions between different
languages, between different address spaces, and between operating system types. ILU can
be used to build multi-lingual object-oriented libraries ("class libraries") with
well-specified language-independent interfaces. It can also be used to implement distributed
systems. It can also be used to define and document interfaces between the modules of
non-distributed programs. ILU interfaces can be specified in either the OMG's CORBA
Interface Definition Language (OMG IDL), or ILU's Interface Specification Language
(ISL). - Inter-Language Unification Page
"The IPC interface in BSD-like versions of Unix is implemented as a layer over the network
TCP and UDP protocols. Message destinations are specified as socket addresses; each socket
address is a communication identifier that consists of a port number and an Internet address.
The IPC operations are based on socket pairs, one belonging to a communication process.
IPC is done by exchanging some data through transmitting that data in a message between
a socket in one process and another socket in another process. When messages are sent,
the messages are queued at the sending socket until the underlying network protocol
has transmitted them. When they arrive, the messages are queued at the receiving
socket until the receiving process makes the necessary calls to receive
Sockets Programming in Java
Mixed Language Programming
"A high-level 3D graphics library which offers binary and source
level compatibility with Apple's Quickdraw 3D API."
"A high performance 3D scene graph and effect visualization toolkit for
Linux, Win32 and IRIX."
Fast Light Tool Kit
CPAN and NNTP (Apr. 1996)
Flocking and Recent Visitors
A Tiny Database and htaccess
Tracking Bad Hits (Jan. 1997)
The Road to Better Programming (with Perl) - Teodor Zlatanov
Using Things from the CPAN (Jun. 1999)
Tieing Up Loose Ends (Jul. 1999)
Scripting Your Apache Server with Perl (Aug. 1999)
Cultured Perl - Teodor Zlatanov
XS Mechanics - Steven McDougall
Developing Coding Guidelines (November 2001)
Commenting Your Code (November 2001)
Loops, Clean Code and Perl Idioms (December 2001)
Functional Programming (January 2002)
Modules and Objects (January 2002)
Network Programming with Perl - James Lee (April 1999)
Perl Embedding - John Quillan (November 1998)
Internet Protocols: Remote Procedure Call (RPC) - Rhys
Programming with Remote Procedure Calls - Caldera (Jun. 2001)
Remote Procedure Calls in Linux - LJ (Oct. 1997)
Comparing Remote Procedure Calls - John Barkley (Oct. 1993)
XML-RPC for Newbies
- Dave Winer (Jul. 1998)
Exploring XML-RPC - Jon Udell (Aug. 1999)
XML-RPC Specification - Dave Winer (Jun. 1999)
"Sed is the ultimate stream editor. If that sounds strange, picture a stream
flowing through a pipe. Okay, you can't see a stream if it's inside a pipe.
That's what I get for attempting a flowing analogy. You want literature, read James Joyce.
Anyhow, sed is a marvelous utility. Unfortunately, most people never
learn its real power. The language is very simple, but the documentation is
terrible. The on-line manual pages for sed are five pages long, and two of
those pages describe the 34 different errors you can get. A program
that spends as much space documenting the errors that it does documenting
the language has a serious learning curve." - Bruce Barnett (from )
"What is a shell, anyway? It's simple, really. The UNIX operating system is
a complex collection of files and programs. UNIX does not require
any single method or interface. Many different techniques can be used.
The oldest interface, which sits between the user and the software, is the
shell. Twenty five years ago many users didn't even have a video terminal.
Some only had a noisy, large, slow hard-copy terminal. The shell was
the interface to the operating system. Shell, layer, interface, these
words all describe the same concept. By convention, a shell is a user program
that is ASCII based, that allows the user to specify operations in a certain sequence.
There are four important concepts in a UNIX shell:
- The user interacts with the system using a shell.
- A sequence of operations can be scripted, or automatic, by placing the operations in a script file.
shell is a full featured programming language, with variables,
conditional statements, and the ability to execute other programs. It
can be, and is, used to prototype new programs.
- A shell allows you to easily create a new program that is
not a "second-class citizen," but instead is a program with all of the
privileges of any other UNIX program." - Bruce Barnett
Shell Differences FAQ [All] - Brian Blackmore et al. (Jul. 1997)
Working in the the Shell Environment [Bourne, Korn, C] (Feb. 2002)
AIX Version 4.3 System User's Guide: Shells (Oct. 1997)
Unix Shell Quote Tutorial [Bourne, C] - Bruce Barnett (2001)
- Command and Shell User's Guide [Bourne, C, Korn] - DEC (Aug. 1994)
- Shell Portability
- Bourne (sh)
Z-Shell FAQ - P. W. Stephenson (1995-2001)
Writing UNIX Scripts
UNIX Shell Patterns - Jim Coplien et al. (1996)
"Shell has emerged as a family of programming languages for the
UNIX Operating System in the same sense that JCL emerged as a
programming language for mainframe job control in the 1960s. It is a
family of languages because we find variant syntaxes and capabilities in the
Bourne shell, the Korn shell, the C shell, and others. Most of the patterns
described here apply equally well to all these variants.
These patterns do not form a full pattern language nor are they a
comprehensive collection of patterns for the "architecture" of a Shell program.
They cover frequent Shell programming problems that often are resolved
only with expert insight."
Shell Command Language Index
The Open Group Single UNIX Specification's definition of the
XSI Shell Command Language.
- Shell Functions and Path Variables - Stephen Collyer
The Zsh Workshop - Larry P. Schrof
A User's Guide to the Z-Shell - Peter Stephenson (Jun. 1999)
Rc is a command interpreter for Plan 9 that provides
similar facilities to UNIX's Bourne shell, with some small additions and less
"Eshell is a command shell implemented entirely in Emacs Lisp.
It invokes no external processes beyond those requested by the
user. It is intended to be a functional replacement for command shells
such as bash, zsh, rc, 4dos; since Emacs itself is capable of
handling most of the tasks accomplished by such tools."
hush FAQ - Jaco van Ossenbruggen (May 1997)
interpreter associated with the hush library is a
shell, called hush, including a number of the available extensions of
Tcl/Tk and widgets developed by ourselves (such as a www and a video
widget). The hush library offers a C++ interface to the Tcl/Tk toolkit
and its extensions. It allows the programmer to employ the
functionality of Tcl/Tk in a C++ program."
scsh FAQ - Michel Schinz (Nov. 2002)
a Scheme shell, i.e.
a Unix shell which uses Scheme
as its scripting language.
- Man pages:
Standard (and Nonstandard) ML
"A set of library routines that enable C programmers to describe arbitrary data structures
in a machine-independent way." -
External Data Representation: Technical Notes
XML is the Extensible Markup Language. It is designed to improve
the functionality of the Web by providing more flexible and adaptable information identification.
It is called extensible because it is not a fixed format like HTML
(a single, predefined markup language). Instead, XML is actually a
`metalanguage' - a language for describing other languages - hich lets
you design your own customized markup languages for limitless different
types of documents. XML can do this because it's written in SGML, the
international standard metalanguage for text markup
systems (ISO 8879). - XML FAQ
XML FAQ - Peter Flynn, ed.
W3C XML Home Page
- A Layman's View of XML [ Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 ]
The XML Revolution: Technologies for the Future Web - Anders Moller and Michael I. Schwartzbach
Working with XML: The Java API for XML Parsing (JAXP) Tutorial
An Introduction to Perl's XML::XSLT Module
MathML is a low-level specification for describing mathematics as a basis for machine to machine communication.
SVG is a language for describing two-dimensional graphics and graphical applications in XML.
X3D is a powerful and extensible open file format standard for 3D
visual effects, behavioral modelling and interaction. It provides an
XML-encoded scene graph and a language-neutral Scene Authoring
Interface (SAI). The XML encoding enables 3D to be incorporated into
web services architectures and distributed environments, and
facilitates moving 3D data between applications. The Scene Authoring
Interface allows real time 3D content and controls to be easily
integrated into a broad range of web and non-web applications.
XSL is a family of recommendations for defining XML document
transformation and presentation. It consists of three parts:
- XSL Transformations (XSLT), a language for transforming XML;
- the XML Path language (XPath), an expression language used by XSLT
to access or refer to parts of an XML document; and
- XSL Formatting Objects (XSL-FO), an XML vocabulary for specifying formatting semantics.
The XML User Interface Language (XUL) is a markup language for describing user interfaces.