Recently, I had trouble finding a freeware version of PGP that I could use on Windows. It seems that PGP Corporation has placed a time restriction on the latest freeware version, and it has also removed all instances of previous versions from its Web site. Eventually, I was able to find PGP Freeware 8.0.2 for Windows XP, so I put it up for download here for those who find themselves in the same position I did. Of course, I haven't actually written this myself; I'm merely re-distributing it. Note that this is freeware, so by downloading and installing it, you do not violate any copyright laws. Should you decide to install it, here is an excellent guide to the installation process and available features.
Software
Autocomplete Manager, a Mozilla Firefox extension that augments the address Autocomplete framework in Firefox, providing advanced features, such as customizing the sorting criterion and appearance of entries on the suggestion popup. Check out the extension's page for all available features. It comprises around 3,000 non-comment lines of JavaScript and XUL code, and has more than 160,000 downloads on the official Mozilla add-on site.
For my own convenience, I wrote a short bash script for authenticating on the UCLA Computer Science department wireless network without using a graphical browser. It utilizes curl to authenticate on the command line instead. The script has been tested on Fedora Core 4, but should also work fine on other Unix flavors. You can either enter your username/password fields in the script file, or have it ask for them every time you run it. You can also invoke it from within your ifup interface startup script, to have authentication automatically take place whenever your wireless interface comes up.
An emulator of the Quikwriting palmtop input software, written in Java; fully functional with the majority of the features in the original software. It is around 850 non-comment lines of Java code and utilizes Swing for the GUI.
A tiny Web server (around 300 non-comment lines) and an HTTP client, both written in C. I wrote these some time ago while experimenting with network and multithreaded programming on Linux. The server supports only the 200 (successful response) and 404 (file not found) HTTP status codes. It creates a thread pool at startup and assigns a separate thread to serve each request. The client is also multithreaded and can be used to stress-test any Web server.
My own wrappers for the C socket functions. These were designed to make it easier to write network applications on Linux, by providing a more high-level API to developers than the native socket calls.
My own implementation of C memory allocation functions, designed in the same spirit are the socket wrappers. I implemented this to better understand how memory allocation works in C.
A library for manipulating strings, written in C; encapsulates memory allocation and de-allocation for strings, making it easier to treat them as first-class objects.
An implementation of AVL trees, written in C. It supports creating a tree, adding and changing nodes, and balancing.
VRML Author, a 3D scene authoring tool. This nifty little tool allows you to load up VRML models in a 3D scene, manipulate (translate, rotate, or scale) them at will, and save the result as a single model in VRML format. This was the software artifact of my Dipl.Eng. thesis in Greece back in 1999. It is around 2,300 non-comment lines of Visual C++ code and utilizes MFC and the Cosmo3D library from SGI.
An image manipulation tool, written in OpenGL and Visual C++. It has been tested on Windows XP and makes for a good first project in an introductory image processing class.
Loband Switcher, a Mozilla Firefox extension that controls how the browser loads pages. Loband is a public service that simplifies Web pages, in order to make them download faster over slow Internet connections. To use the service, one has to first load the main Loband page, and then enter the page of interest in a textbox. This extension reduces the required steps to load a page through Loband, by automatically translating an address the user enters into its Loband equivalent, and then using the Loband service to download the simplified page. The user can always revert to the default browser behavior, if desired.
A simulator for a generational garbage collector, written in C and tested on Sun Solaris 8. This little program simulates the operation of a garbage collector based on object generations. Such a collector exploits the fact that "most objects die young". You can read more about this intriguing topic here.
An implementation of a neural network using back propagation, written in MATLAB. I implemented this for a class project in my senior undergraduate year. It contains some data to train the neural network, and also test data to check its performance after training. The parameters are set to values I found to be "good" for the specific test dataset.
Documents
After giving a talk on building Firefox extensions at a UCLA Linux Users Group event, I decided to author a simple tutorial on the topic based on my own experience, as well as worthwhile resources I have discovered.
I used to access my home directory at the UCLA's Computer Science department via Samba on Windows, so I decided to compile a document containing detailed instructions on how to do that for future generations.
Back in December 2002, Manas Tungare and I wrote up a comprehensive literature review on Zoomable User Interfaces (ZUI). Although it does not contain the latest developments in the field, I thought I would post it here, in case someone finds it useful.
