These pages are supposed to be programming oriented, but we'll see. Most of the programs here come with a bare minimum of compiling instructions, so watch out.
Latest changes:
2006/11/10
A new snapshot of xli, fixing a
crash on PGM/PPM images with a maxval > 255, and various warnings about
uninitialized variables.
2005/09/04
Another snapshot of xli is available,
fixing a bug in
-fillscreen when used with -onroot,
and some minor prototyping problems.
2005/05/20
I added 3 more X things. I've given up on gawwwk, sorry!
2005/02/27
A new snapshot of xli is available,
which fixes some security problems.
2004/10/04
Version 1.2 of lmclock is available.
Andrew Pam has made available source and binary RPMs for xli-1.17. (Sorry this announcement is so late, I've been hideously busy lately.) Thanks a bunch!
While I get around to polishing things up, I'm posting a snapshot of the development version every so often.
I got tired of not having a version with all my changes easily available to install on strange systems, so with no further ado, hot from the forge with the bitter metallic odour still clinging to it, here's xli-1.17.0. You'll need the JPEG, PNG, and zlib libraries.
I ran across the specification for the Portable Network Graphics format and was instantly smitten. I resolved to add PNG capability to version 1.16 of xli. In the process, I discovered, as so many others have, the awesome power of assert.
I got annoyed with how slow xli was with very large bitmaps and other
large images and added support for the
MIT shared memory extension. I've only tested it on
Linux/XFree86 for 8bpp and 32bpp, so let me know if I blew it somewhere.
Update (1998/01/23):
XFree86 seems to have improved since I wrote this, but it's still nice
for huge images. Also, I am informed that its use of shared memory may
not work on all systems, although
mpeg_play
seems to do the same thing.
I wanted to view progressive JPEGs and JPEG comments, so I replaced xli's
built-in support with a module that uses
version 6 of the IJG library.
Update (1998/01/23):
I've fixed a few bugs: it should handle corrupted/damaged JPEGs
better now.
I wrote a hideous, gross, hard-coded
Xerox Lisp machine clock clone in X. I got it to the point where
most window managers could tolerate it, and then spent weeks finding
a memory leak. I've updated it to look like a regular software
package with its own directory, and added support for a window
geometry option. Version 1.1,
1.0, and the
original distribution are available for comparison.
Update (2004/10/04):
Some IRIX fixes (thanks to Georg Schwarz), improved error checking
when opening the display (thanks to Cliff Miller), and lmclock now takes
a display option.
A long time ago I learned, slowly and painfully, the ritual system calls to open and close TCP/IP connections under Un*x. I cobbled together a small library of routines and programs so I'd never have to do it again. I find tcpsh particularly useful.
I put together some small
X things that I've found useful, but
aren't in the standard X distribution for some reason.
Update (2005/05/20): Three new things!
A command front-end, a text-based tool bar, and a cut-buffer stuffer.
I got tired of working around rdjpgcom's escaping of non-ASCII
characters (or whatever ctype.h thinks isn't a printing character)
and added a flag to suppress this
troublesome, non-idempotent and annoying (to me) behaviour. This patch
now includes a flag (-all)
to allow scanning past the compressed data to get at
comments which some software puts after it.
I took
Ben Jackson's lossless cropping
patch to
jpegtran in version 6b of the
IJG JPEG distribution
and
modified
it to allow cutting regions that aren't an exact multiple
of the block size.
Can your browser handle a progressive jpeg? Can your image viewer?
Spread the word! I'm sending my patches for the current version of the revived Netpbm.
I was an avid user of Chimera 2.0, the browser of champions, or at least of people who like running gdb a lot. I got started with the more stable older version and then moved on to the hard stuff. After new versions started coming out in 1998 or so, I stopped messing with alpha release 108. With great sadness and fond nostalgia, I quit using it in 2004 in favour of Mozilla.
I learned some of what I know about programming from books. I've learned a lot more from reading other people's code, which is where I came across some slightly peculiar but useful idioms. I'm a big fan of opaque types in C and other languages where they're available.
All the rest of what I know about programming I learned the hard way.
The Department of Computer Science at the University of Toronto has some interesting reading. From there, I've taken Rob Pike's notes on programming style (mostly in C, but also in other languages) and converted them to HTML. Compare it to Linus Torvalds's Linux kernel coding style document.
Check out Ross's home page.