The following list summarizes a good deal of the public software which
I have written myself completely or at least significantly co-authored.
- mod2oku and patzcal (1988 - 1993)
- My master thesis work (a Modula2 interpreter) morphed into
an abortive Ph.D. work (as an Pascal interpreter). Both interpreters
are systems for educational purposes, so they include both
compile time and run time visulization facilities. The source
is written in very portable C. Different front-end modes exist:
cmd-line, curses, plain X11, tcl/tk. The languages are implement
with a very close eye to the reference documents (in both cases
those by N. Wirth). The Modula-2 implementation in particular
works according to the book, even where book has very, very perverse
requirements if read closely. Most M2 compilers checked take invalid
shortcuts or require unecessary pre-declarations or fail to spot
certain illegal source code. (Some of the analysis of the M2 report
went later into the VDM-based M2 ISO standard. Not that *that* made
things simpler by any means.)
The gzipped tar
file contains this double including the entire RCS history, which
is:
- modula2 in a directory hierarchy
- modula2 in a single dir
- pascal in a single dir
The checked-out sources will build the Pascal system.
You'll have to check out an earlier revision from the included
RCS files to build the Modula2 system. Keep prodding me to convert
the RCS stuff into the CVS archive where both language versions
could live side-by-side on their branches.
- acquire (1985)
- My multi-player computer version of Sid Sackson's famous board game.
I loved the board game (now marketed by Hasbro) which is a real classic
among all serious gamblers. However, I always thought that waiting for
one's turn wasn't The Real Thing, so the games allows everybody to act
simultaneously. It is essentially a stock market simulation. This was
very likely the first socket-based program ever written in Brauschweig.
It started out with Unix domain sockets, then moved to TCP/IP.
The code is really ugly beginner's code, and it shows that I was
a beginners w.r.t. network programming at that time, too.
The program should be rewritten from scratch. But I'm saying that
since 1987, so don't hold your breath.
Anything else to say? Yes. It's a load of fun to play.
Different player skills can be compensated for by adjustable time
limits. (Just like handicaps in go.)
- gin-mode.el (1989)
- The "auto guess indent" minor mode for emacs.
This mode automatically recognizes indents, hanging indents, and
consistent prefix to keep (such as comment prefixes or mail quote
prefixes). It is controllable by two or three regexp variables.
I gave the copyleft to the FSF. They used the copyleft to re-implement
the code at elisp-code at the C level. You can find the pathetic
remains as the indented-text-mode and its associated flag
variable adaptive-fill-mode. They botched my gin-mode idea so
completely, that I would rather have retracted
my copyleft assignment. By all means, get this original minor mode
and be happy ever after. gin-mode.el is what makes some people here
stick to emacs even though would like go back to vi otherwise.
- mail-yank.el (1989)
- This one is historic and very likely not of value anymore.
(I haven't tracked emacs happenigs after version 18.59 anymore.)
The gin-mode.el above was mainly written to reformat emails
containing quoted material nicely and without fuss. In particular,
it will make it easy to use MN> unnested quotes
instead of the complex >>> nested quotes, which I
introduced in the late 80's. They became eventually used world-wide,
perhaps because we (= Ashwin Ram, Kyle Jones, Barry Warsaw, and
me) provided so good support for them in emacs. Actually, Barry's
extensive work on supercite (or, at that time, "superyank") was a kind
of back-firing experience for me. The lesson was: stupid people will
still do stupid things with smart software, just faster.
Anyway, here is the olde mail-yank.el, the minimalistic version which sticks
to the quoting protocol which we developed and which soon became
official for gnu emacs. (So you very likely do not need
mail-yank.el at all. Unlike the mega-wonder "supercite", it
offers not a single tuning knob and no glitz. It just works,
together with gin-mode.el from above.
- pwgen (1995)
- A password generator (or random strings in general).
We need such a beast because customers are usually incapable
to decide on a good password when we ask them for one on the phone.
Those who are able to make their choice within five minutes
of most strenuous deliberation invariably end up with "susan".
Then they enter "Helen" the very next day. Now we inflict
simply strings like, wait, ---
h43gf5sm56vh5g
dznpwbt288mu3h
583x6gzpfggd7k
x262rg54hpu7b6
g55btwreuetrnr
m9z82vyftt93wu
qqewh9ysm5wvz6
upon them.
There are probably dozens of "pwgen" implementations out there.
This one doesn't produce pronouncable passwords, but it offers
several predefined character sets to choose from, one of them
avoiding characters which can easily create trouble, in particular
when faxed (digit 1 vs. letter l vs capital
I).
- alfazulu (1997)
- Spell text using the international ("NATO") alpabet.
I wrote this after several dealings with NSI over domains.
Funny how Americans fail to spell "gaertner" correctly without
this aid. Now we say it loud and clear:
% alfazulu
gaertner
Golf Alpha Echo Romeo Tango November Echo Romeo
^D
%
DOT WHATEVER, guys.
- cpr (1998)
-
The cpr filter copies stdin to stdout, stripped down to only those
lines which are either a conditional preprocessor directive or a global
definition (a line starting with a letter in column one). Lines are
indented according to their conditional nesting level. The purpose of
the tool is to provide a quick overview for complex source modules.
- globnix (1999)
- This is a stress-testing kit providing lots of hideous, nasty,
and unexpected filenames of various flavours. I compiled this kit
after one of my CGI /bin/sh scripts failed miserably twice in a row.
If your program still run OK in the presence of these files, you are
a good mile closer towards robustness and security.
- imerge (1987)
-
The main goal of the program is to allow interactive merges of
concurrently developed versions of any text file. I routinely use it
to consolidate two versions of a text document where there preferred
choice falls both ways from place to place.
Imerge is nothing else than the program idiff ("interactive diff") from
Kernighan & Pike's book "The Unix Programming Environment". There are two
tiny enhancements: it will use your $VISUAL or $EDITOR, not just ed; and
you can select the name of the merged file; and it has a man page.
- mailwatch (1998)
- We are (among other things) an ISP, and this tool monitors the mail
boxes of our customers. It checks for apparantly orphaned mail boxes
and obscenely large ones. We run it weekly.
- urlxxcode
- En- and decoding of URLs according to RFC 1866. I happen to write
CGI programs with the good ol' /bin/sh and these two programs come handy.
It is really trivial. it probably is also useless to the rest of the
world (which prefers humongous perl libs to clunky unix processes).
- Software by me you probably already have
- Just as an aside, odds or high that you already run some
teeny tiny code from me:
Whenever you run gcc, you run two or three lines of code written be
me which make sure the group ownership and permissions of the .o files are
not trashed. (1987?)
GNU Emacs comes with asm-mode.el originally written by me and then
hacked by the Hacker's Dictionary compiler, Eric S. Raymond. How
bazarre! It still has my cool asm-comment function which is useful
for other languages using EOL-comments, too ( "//" in C++, "NB." in J).
Successive hits of M-; will re-align a new comment to any of these
styles:
foo++ NB. bar
NB. bar
foo++
NB. bar
foo++
With the exception of "gin-mode.el" which is copylefted,
everything is by intention BSD-style copyrighted. I would
be emphatically thrilled by getting a postcard from
users. Those who are filthy rich and absolutely insisting
to donate something to me can make me happy with any item from my