Note: This page is no longer maintained and has not been updated since 2004.


Current Projects

Finished Projects

  • FACADE -- Framework for Access-control in Computer Aided Design Environments. One of my current research projects at the GICL Research Laboratory. It is a cross-platform, network-enabled, OpenGL-based, 3D CAD environment written in C++.

  • MUG/CUP -- Multi-User Groups for Conceptual Understanding and Prototyping. Another research project at the GICL Research Laboratory. It is cross-platform, Javaspaces/Jini network-enabled, Java3D-based, CAD environment written in Java.

  • Labrador -- This is a WebCT middleware program I started with the DUPLEX Research Laboratory. This project is written in Perl.

  • My donations to digital society, also called Free Software. Bit-Rot is a bad thing, open source your code no matter how ridiculous or incriminating. The people who are going to hire you will admire your efforts, otherwise you probably shouldn't work there (imho).

    Here is some software that usually took some time to write. It is provided under the terms and conditions outlined in the GNU General Public License. There is a text version called LICENSE with any of the tarballs that follow. Each package also contains a pdf document outlining the requirements of the project. A couple of the projects are incomplete, so feel free to change them under the conditions of the license.

    • topnet. This uses pcap to capture traffic, then qsorts IP numbers based on bandwidth consumption (using ncurses). It is designed to behave similar to the top program, but for network traffic. This project is written in C.

    • xmms-clu is a package for the xmms mp3 player, it uses libxmms to interface with your currently running player. The commands can be easily bound to the Fx-keys or any key combo using a WM. You can find my sawfish keybindings in the rc file I have linked here. This project is written in C, sawfish keybindings are in LISP. Some of the commands are:

      • xmms-term -- playlist navigation, designed to replace the xmms GUI entirely.
      • xmms-now -- print statistics on current song to X11 background (uses libxosd), or the terminal.
      • xmms-vol, xmms-rm, xmms-mv, xmms-nav
    • libslic: Saphira Libraries for Interactive C. This library allows robot behaviors written using Interactive-C (currently Handyboard bots, and RCX in Lego Mindstorm bots), to be translated to the Activmedia Pioneer I. The goal was to allow code exclusively designed for Interactive-C to work with the Saphira libraries provided with the Pioneer I.

      Another reason why this package shouldn't suffer from bit-rot is because it has a re-usable implementation of full-duplex Unix Domain Sockets with pthreads. A user registers callback functions which are passed any I/O from the reader and writer threads. This is a good example for anyone trying to do local sockets for IPC. This project is written in C.

    • Anytime Algorithms Library An anytime algorithm, is an algorithm which always returns a result at anytime. Anytime algorithms are used in realtime systems where some result at anytime is better than no result. The quality of the results must be monotonically increasing in order for it to be considered an anytime algorithm. I have provided several abstract classes to be extended by an anytime algorithm class. The abstract class provides methods for printing, debugging, registration, and interfacing with gnuplot. As a proof-of-concept, implementations of anytime-quicksort, and anytime-TSP (Traveling Salesman Problem) have been provided. This project is written in C++.

    • A Distributed Agent-Based Shopping Protocol. The problem and ontologies were provided to my advisor by VerticalNet. The ontology is not in this package b/c an NDA was involved. The ontology was used for buyers and sellers to communicate, via KQML, about products and pricing information. The buyer agents were hooked up to a Prolog backend which handled the reasoning since some vendors would have complicated price breaks for certain quantities of a particular product and not others. Several purchases means more on shipping as well, the agent tried to handle this. The goal of the buyer was to minimize spending on part of the buyer. This project was written in Java and Prolog.

    • Multi-Threaded Voting Server. This program is a web server that uses pthreads and sockets, it also has terminal, and X interfaces to the voting database. This project was written in C.

    • MemHacker Package, Memory Hacker Package for Maple V R5. This package can be used to parse symbolic and algebraic data types. Maple is an easy-to-learn efficient symbolic algebraic++ package for representing any obscure syntactic mathematical models. This package is useful for debugging programs which involve floating point calculations and low-level numeric datatypes in Maple.

  • Simple CGI
    • PhoneAlphabet, find out all possible word combinations associated with your telephone number.

    • Adblaster, automatically removes ads from web pages.



"In 1971 when I joined the staff of MIT Artificial Intelligence lab, all of us who helped develop the operating system software, we called ourselves hackers. We were not breaking any laws, at least not in doing the hacking we were paid to do. We were developing software and we were having fun. Hacking refers to the spirit of fun in which we were developing software. The hacker ethic refers to the feelings of right and wrong, to the ethical ideas this community of people had - that knowledge should be shared with other people who can benefit from it, and that important resources should be utilized rather than wasted."
  - Richard Stallman, in MEME 2.04

Possibly Last Modification $Date: 2004/11/18 15:37:46 $