copyright © 1986 Gillian Collyer
Plan 9 and (l)unix system programmer.
From 1994 through 2001 and again from 2006 to 2014,
I was a Member of Technical Staff at
(originally a part of AT&T, then Lucent, then Alcatel-Lucent,
in Murray Hill, NJ,
where I worked on operating systems and
messaging systems and protocols, among other things.
pgp public key(s)
RSA public key
was generated by PGP 2.6.2
(i.e. it's in the second of three or four incompatible formats)
and its fingerprint is
Type bits/keyID Date User ID
pub 1024/1F08CB75 1996/06/24 Geoff Collyer <email@example.com>
Geoff Collyer <firstname.lastname@example.org>
Geoff Collyer <email@example.com>
Key fingerprint = 67 08 1E F6 6B F3 1B 1B CF 27 87 7B 3D 59 30 A1
ranting and raving
the sad state of crytographic infrastructure, 17 May 2012
I've been looking at ssh and IPsec again and it's made me realise again
that we (in the computing field)
have made a mess of the artifacts of cryptography
and it's entirely our own fault.
Starting from goals such as privacy and authentication of communication,
we have taken aim at our feet and fired with
PGP is a sad example:
by changing key formats and algorithms repeatedly
(sometimes for compelling legal reasons),
interoperability is so impaired that you pretty much
need to know in advance which version of PGP each recipient uses.
- oids (object ids)
- the X.509 binary encoding used for key certificates
- dozens of certificate `authorities'
- protocols with so many optional parts and choices that systems can barely interoperate
- an array of binary key formats
- and more
The triumph of ssh v2 (a classic second system)
over v1 is another example:
whatever the theoretical weaknesses of v1 were,
it was surely better to encrypt one's communication than not.
We need a v3, a stripped-down and streamlined version closer
to v1 than v2.
We seem to be better at building great steaming piles of crypto
than getting to the core of what needs to be done and doing just that.
ported Plan 9
to Xilinx Virtex 4 and 5 Power-PC-based evaluation boards,
ARM-based systems including the Sheevaplug, Gumstix Overo and Trimslice,
MIPS-based systems including the Routerboard RB450G.
wrote an NVMe driver for Plan 9.
maintained the original
file server kernel
(now upgraded to 64-bit sizes)
and contribute to Plan 9 generally.
merged the big-endian and little-endian MIPS compilers, assemblers and loaders.
wrote the current (new) Plan 9 tar,
which is cleaner and faster than the old one, and is POSIX-compliant
(i.e., can cope with longer path names).
file server kernel to use 64-bit file sizes,
offsets and block numbers internally,
ported the CPU kernel's IDE code, thus enabling the use of DMA, RWM, etc.,
and ported the CPU kernel's Intel gigabit Ethernet driver.
added greylisting and other anti-spam measures to
added multicasting (for IPv6) and shutdown entry points to drivers
for all modern ethernet cards.
updated the connection server to recognise
fixed the kernel to recognise v6 addresses starting with ``20'' as global.
libraries and made them use a consistent byte order on disk,
rendering the databases portable across CPU architectures.
arranged completely diskless booting of Plan 9 PCs using compact flash cards
added device mirroring (think RAID 1) to the Plan 9 file server kernel.
Combined with support for IDE disks,
this enables use of inexpensive hardware to form
a large Plan 9 file server.
set up and ran the largest Plan 9 file server
(with optical disc jukebox)
inside Bell Labs other than the main Plan 9 development file server.
Extended support for jukeboxes with optical disks of varying sizes.
The smaller jukeboxes can now be had second-hand quite cheaply.
distributed operating system,
built a scalable message store that served a broken-out view of MIME
messages, and designed and implemented rsmtp, an SMTP replacement.
Got Inferno running on Mac OS X.
configuring IPv6 tunnelling networks
developed the operating system for the now-defunct
set-top box, notably DSP communication, and the C library.
Unix device drivers
Tektronix storage (display) tubes (for V6 Unix),
Nuclear Medicine scintillation counters (for V6 Unix),
and other kernel work
(e.g. putting /tmp in memory).
reverse-engineering (``decompiling'') manual pages from
nroff output to troff -man input:
invented the term const poisoning during development of the
ANSI C standard
Unix system programming and running Unix systems
(including 8th and 9th edition)
for almost a decade at
the University of Toronto,
the computing center,
undergraduate computer science instruction,
the statistics department.
set up the original bell-labs.com servers
during the ATT/Lucent split,
notably DNS and mail servers on Plan 9 and internal and
assigning interrupt priorities in software
via interrupt queueing, in Computing Systems, Spring 1996
evolution of operating systems:
Research Unix in
(updated 23 Dec 1998 to more closely match the printed article
in Microsystems in 1984).
Also, a new, improved draft that fixes a number of errors we missed the
first time around and adds real references, in
the Unix shell.
I am making available two modified shells,
from Seventh and Ninth Edition Research UNIX.
I've incorporated the memory management
and directory reading changes from the paper,
and some other modernisation
(e.g., include files and 64-bit tweaks)
into both shells.
Both should run on POSIXy systems and
have been used on Unix, OS X, the BSDs and Linux (among others)
on 32- and 64-bit systems
(and even 16-bit PDP-11s long ago)
including as my login shell.
Among other features,
they lack the GNU
library, so what you type is what you get.
The up-to-date V7 sh,
updated most recently on 29 July 2017.
The up-to-date V9 sh from the paper,
updated most recently on 29 July 2017.
performance tuning and more software reimplementation:
C news netnews software,
Blue Gene Plan 9 caching:
automated game referees:
the successor to Unix;
a distributed system
drawing on over 20 years of experience with Unix
of Plan 9 software
an early outline of a proposed-but-rejected book about
why Plan 9 matters.
Pardon the formatting; it was converted to HTML mechanically.
and the follow-on go
languages, which feature particularly helpful support
for processes sharing address space.
If POSIX pthreads give you the willies,
these might be for you.
archiving and optical media, notably CD-R and BD-R (Bluray).
Plan 9 has a convenient backup system using optical disks,
discussed in its
block store is a worthy replacement when combined with
the file server built on top of
is the distribution of my
news overview database code.
is now incorporated into essentially all serious newsreaders.
More Taste, Less Greed
strong cryptography as an aid to privacy and civil rights
geoff at collyer.net