Minor Projects
Not all my projects are large; I have completed many small assignments to the satisfaction of my clients, including these examples.
This application, written as an MDL extension to the Microstation CAD system, is used by Public Works Canada when planning the placement of control towers at Canadian airports. The application provides a graphical user interface for selecting a control tower type, placing the control tower at a desired location, and configuring the tower's supports and the position of controllers inside. It then displays a rendered view of the airport, as seen from the selected controller position.
The Resource Database application, developed for an Ottawa-area employment agency, provides an easy-to-use user interface to employment and education resources. The application is written using FoxPro for Microsoft Windows. It completely hides the FoxPro user interface, and provides the familiar File-Edit-etc. menu structure with a dialog-based main window. A companion DOS application can be used to query the database; this application can be distributed on floppy disks or loaded on a BBS as a "door" program.
The problem is simple to state but difficult to solve. Given an annotated map of a city district and a database containing records that describe letter carrier routes, color the map to show a letter carrier's area. Complicating the problem is that a street has two sides, which may be served by separate carriers. The algorithm that I developed correctly colors complex maps, and it completes the coloring of even the largest map in a matter of minutes.
Pocket TELNET is a TELNET utility I wrote for my recently acquired HP Jornada 720. It incorporates the same features that are found in the standard TELNET program in Windows 95/98/ME/NT/2000, and it supports ANSI color and Web browser integration. A demo version is available for download, and a registration key can be purchased on-line for $14.95.
Custom Application Suite
In the mid-1990s, I worked as a consultant for Bell Canada on several occasions. I also participated in the conceptual development of a network testing and management system (NTMS). While NTMS never got beyond a non-functioning prototype stage, I did end up building a client-server test suite that automated telecommunication circuit testing. To the best of my knowledge, this software is still in use as of the mid-2020s.
Hardware Driver
After the Great Blackout on August 14 2003, as we were threatened with rolling blackouts, I decided I needed a UPS to keep my server healthy. I had to buy one hastily, so I bought the first I found, which was an Energizer model, the ER-OF800. Unfortunately, it came without Linux drivers, and I found that it had a rather unusual, non-standard USB interface. It took a bit of an effort but I eventually managed to understand how the interface worked. I first developed a stand-alone driver/monitor program for the unit, but then I used my code to implement a driver for these models for NUT, the Network UPS Tools software suite.
Web Application
I once saw an altitude map of Mars, generated using data from MOLA, the Mars Observer Laser Altimeter instrument on board (where else?) NASA's Mars Observer spacecraft. When I saw this map, an idea was born: why not make this map interactive and let our imagination soar? The result is The Seas of Mars, a Java-based Web application that uses real MOLA data and lets you interactively set the sea level for Mars. I wonder if one day there will be proud ships sailing that vast Northern Ocean...
Research Application
My first ever programmable calculator was deficient: it lacked an implementation of the so-called Gamma function. I quickly embarked on a quest to correct this deficiency and build a quality implementation of the Gamma function that would fit into this tiny calculator's 72 program steps. Little did I know that my quest will last more than two decades; only recently did I finally learn about a computational method that allows one to calculate the Gamma function to an arbitrary precision. I created an implementation of this algorithm in C++, using a publicly available multiple-precision program library, GMP and my own C++ wrapper classes for GMP's floating point functions.