Ramdom access

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.

Research related programs

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.

A suite of programs for modelling protein structures.
A suite of programs that are generally useful for scientific computing.
Monty Hall simulation
A simulation of the famous Monty Hall problem

Web related programs

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.

General purpose shopping cart and ordering programs
Fairly general purpose shopping cart and ordering programs based on cookies. The ordering program can be seen in action at the TWISTED HELICES band page.
General purpose registration and login programs
A couple of fairly general purpose programs to handle registration and logins to a web page using HTTP-based user authentication (in progress).
General purpose audio and video player
A form-based multimedia player that lets users select item and format. The set up requires some knowledge of C. You can see how it works with the two audio players I've set up: Twisted Music Player and Machine Head
General purpose pre to table converter
This program takes a preformatted ASCII file and converts it to a table like so. Used as an SSI, it can not only make updating information easy, but the plain ASCII file can also provide a decent alternative to browsers that can't display tables.
General purpose trivia game
General purpose program to score answers based on a set of questions. Also has an easy interface for submission of new questions by users. Check out the Cheesy Primus Trivia Game to see how it works.
General purpose URL redirector
General purpose program to redirect a browser to a given URL, either via an argument or through a form. Useful for logging and tracking purpose, and can also serve as a menu.
General purpose forms mailer
General purpose program to e-mail the contents of a form.
The mutating list of cool www sites
A program that lets viewers add and remove sites.
The Cheesy Primus poll and the TWISTED HELICES poll
Polling programs.

General programs

Sorted from most-useful to least-useful to other people.

Automagic plan changing and finger-logging program
Just what it says: changes plans upon each try and logs finger requests.
This is a curses-based program in VAX C implementing FTP. It's the first working version I have.
This is a curses-based program for VMS for e-mail along the lines of elm. Incomplete, though the mail send part should be working fine.
AI88 suite
A bunch of programs I wrote for my Artificial Intelligence class. I particularly like the boolean expression simplifier. It works under VAXLISP.
A program that plays checkers against you in VAXLISP. Uses a min/max technique.
DCL suite
A bunch of programs written in DCL (for VMS) including a program for quoting and appending signatures in MAIL, Unix-like 'ls' and 'cd' commands, a simple edtini.edt, and many others.
Display images on the root window of your workstation "randomly".
TPU suite
A bunch of programs in EVE/TPU, which I didn't write. There's one that justifies text, and one that quotes and appends signatures in MAIL.
VMS suite
A bunch of programs written in C for VMS systems that mostly emulate Unix commands like 'ls' and 'cd'. There's also a program called msg, which sends fake phone messages (actually it's quite useful to send messages locally if you don't have access to SEND), which got me kicked out of Academic Computing as an undergrad (among other things).
A WPL Compiler written in C that generates 80386 assembly code

Ram Samudrala || me@ram.org