Programming: an intellectual orgasm!
(Some of the words here indicate the date this article was written.)
My first computer was one I actually built from scratch using a Zilog Z80 chip when I was thirteen (i.e., starting with a blank copper plated board, etching out the circuits, buying all the components separately, soldering it in, programming the instructions using a calculator keypad that I jerry-rigged as my "keyboard"). I never finished it, but I was able to write a program in machine instructions (in hexadecimal) that would do automatic redialing of a phone number. I was a bit of an elitist at that time and felt that (knowledge of) hardware was superior to software. (I hold a different view now, mainly because of the convenience of debugging software.) My first "proper" computer was a ZX spectrum which loaded software through the use of a cassette tape drive.
When I started my undergraduate education, I was hacking in DCL on a VAX/VMS system and wrote many many applications under it. I then moved to Unix, but since my primary system was a VMS one, I wrote a ton of programs that would try to simulate an Unix like environment under VMS. I've included all of them here. Currently, everything I write is mostly related to my research on understanding life at the atomic level.
The language I use mostly is C, due to practicality, but I prefer a functional language like LISP. I use TeX and LaTeX extensively for typesetting. I tend to almost exclusively use the Unix operating system, and even though I've used quite a few flavours of Unix, including OSF1, Irix, AIX, and SunOS, Linux is my preferred choice.
Since my senior year as an undergraduate, my my research interests have turned towards theoretical computing and in particular, applying the concepts of theoretical computing science to biological problems. For example, I have worked on using graph theory methods for the prediction of protein structure and investigated issues of context sensitivity (as in formal language theory) in protein structures.
In my time, I've written lots of programs. However, a lot of them are probably useless to anyone else but me. Some of the more serious programs I've written specifically deal with my research, and some others are more general in nature. Most are written on a Unix environment, even though there are a few for VMS. What I have here is a set of tools that people have found useful in the past locally and I presume the 'net can make use of it also. I've included some programs here that are incomplete---feel free to use any or part of it (to learn from it, if nothing else). I don't really care what you do with it and credit would be appreciated. Thanks. Also, it's your own fault if you nuke the world or do something equally disastrous as a result of using my programs. I suppose I should warn you that some of the program are horrendously written since I wrote them to learn.
It's hard to put up my research programs here because they are continuously evolving. I am currently working on two program suites, one for modelling protein structure, and one for doing general scientific work in an Unix environment. These are slowly converging.
I've written a few CGI programs in C which I think are neat, if I do say so myself. I don't spend too much time writing web-applications but some of these have been found useful by other people. The current working versions of programs are listed here; if you want the source for any program that I've not already put up, send me an e-mail message.
Sorted from most-useful to least-useful to other people.