Notable Projects

On this page, a brief summary is presented of all projects on which I was the principal architect and developer (in practical terms, this means that these projects were my own work in their entirety, with at most minor contributions from others.) This page is far from complete; only projects that are remarkable either due to their size and complexity, or due to their unique nature, are presented here.


ODPODP

Research Application

As part of my research of the Pioneer Anomaly, I developed a precision orbit determination program that can be used to confirm the anomalous acceleration. The program performs high accuracy numerical integration of the relativistic equations of motion, with solar system data and ground station data obtained from JPL. Nongravitational forces such as solar pressure are also accounted for. The program calculates effects on signal propagation due to gravity (including the Shapiro delay), the solar plasma, and the terrestrial atmosphere. The code calculates the Doppler frequency shift of the received signal; orbital parameters are adjusted to minimize the difference between calculated and observed Doppler data. A unique feature is the program's ability to incorporate a dynamical model of on-board generated forces due to heat radiation, computed from telemetry data. As part of the same research effort, I also developed a ray tracing code that computes the thermal emissions of the spacecraft in various spatial directions.


MaximaMaxima Tensor Packages

Computer Algebra System

For the last several years, I've been a member of the Maxima development team, concentrating my efforts on maintaining and improving Maxima's tensor algebra capabilities. Maxima is one of the oldest computer algebra systems in existence, its origins dating back to the 1960s. Its tensor algebra packages were originally developed in the 1970s and early 1980s, but they have fallen into disuse. I've revived these packages and also made many improvements; as a result, the packages can now deal with relatively complicated research problems that involve, for instance, the use of nonsymmetric metrics or field equations derived from a relativistic Lagrangian.


Pocket TELNETPocket TELNET

Commercial Application

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.


Spectrum MonitoringRadio Frequency Spectrum Monitoring

Custom Application Suite

This suite actually consists of over half a dozen applications that control a selection of radio frequency test instruments (including Rohde & Schwarz test receivers, Hewlett-Packard and Advantest spectrum analyzers, ICOM professional receivers, and other devices) over GP-IB and serial interfaces. The suite's client-server model allows users to connect and utilize instruments that are deployed at remote locations. Incorporating an adaptive rate algorithm, the suite makes it possible to control instruments while simultaneously receiving compressed digital audio even over a narrowband dial-up connection. A scheduling module allows the user to configure unattended measurement and voice recording sessions.


NORTEC.EXENORTEC H.E.L.P.

Custom Application Suite

This application suite integrates two areas of functionality: a multimedia product catalog and an engineering design application. The product catalog provides salespeople with a portable version of the company's entire product database and includes product images, rich text product descriptions, technical specifications, and engineering drawings. The engineering design application provides a sophisticated design model that allows salespeople to configure an industrial humidication solution and generate a product selection and price offering matching the client's needs.


EDGE.EXELetter Carrier Route Map Coloring

Custom Application

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.


RES-ReachRES-Reach: A Vendor-Independent Web Server Database Extension

Commercial Application

There are many ways to integrate database records with your Web site dynamically, but few solutions are portable across Web servers. RES-Reach is one such solution for the Windows platform. Utilizing ODBC and providing a standards-compliant extension to HTML, RES-Reach enables you to create dynamic Web content without locking in your application with a specific server (or database) vendor. The specifications for RES-Reach were developed by RES International; I wrote a robust 32-bit implementation for the Windows server platform.


w98ntu.gif (11609 bytes)Programming Windows 98/NT Unleashed

Technical Book

Published by SAMS Publishing and translated into several languages, this book of mine has seen three editions (originally published as Visual C++ 4 Unleashed). In it, I provide an overview of all major Windows programming topics, illustrated through practical examples, with particular emphasis on using Microsoft's pre-eminent development system, Visual C++.


linuxbk.gif (8892 bytes)Linux: A Network Solution for your Office

Technical Book

I have been a Linux user since version 0.99 and an avid fan ever since. I've used Linux as an Internet server/router since 1994. So it's only natural that I wanted to write a book to summarize my experience with this wonderful operating system and to provide detailed advice in areas where Linux excels: in a Web and Internet server and IP router capacity. The book pointedly does not talk about the X graphical user interface; instead, the emphasis is on installing and configuring services, optimizing the system for robust unattended operation, and using Linux servers in a mixed-system network environment.


M.U.DMUD: Multi-User Dungeon (British Legends)

Interactive Multi-user Application

M.U.D is, of course, the acronym for the world's first multiplayer computer game: Multi-User Dungeon. Developed in the late 1970s at Essex University, England, it remained very popular throughout the years. At CompuServe, it had a loyal following until the end of 1999, when their version of the game was taken off-line due to alleged Y2K incompatibilities. The original game code requires an obsolete operating environment to run. However, in what MUD's author described as a "marathon programming binge", I created a modern implementation that faithfully reproduces the original game (including most of its charming bugs.) This version has been running at http://www.british-legends.com/ since early 2000.


RSKEY.ORGRSKEY.ORG - A Museum of Portable Programmable Calculators

Non-profit Web Site

The first time I ever handled a programmable number-crunching device, it was a programmable pocket calculator that I was permitted to touch. It was a case of love at first sight. I always remained fond of these machines and a few years ago, started what might be described as a professional collection of vintage portable programmable calculators. The site, http://www.rskey.org/, has since become a popular Internet resource among calculator and mathematics enthusiasts.


Gamma(z)The Gamma function: an arbitrary-precision implementation

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.


WThe W Programming Language

Educational Application

What kind of a programmer is the one who doesn't know how a compiler works? Well, I always pretended that I knew how compilers work, but it was only recently that I actually wrote one on my own. Inspired by the power and convenience of an MS-DOS based pocket computer, I decided to create a simple programming language that could be used on this device. The language also served as a test platform for some concepts, such as the utility of a keyword-less and typeless C-like procedural language.


Viktor's Amazing 4-bit ProcessorA 4-bit Processor

Hardware Construction

Beware of programmers who carry screwdrivers! Or soldering irons. Experimenting with electronics is a hobby I recently rediscovered. By far my most complex project to date was the design and construction of a 4-bit processor using low-level logic circuits. Although this machine has little practical utility, it serves as a useful educational tool due, in part, to its relative simplicity. Yes despite its simple design, the processor demonstrates many key concepts, including the use of microcode, a two-phase clock for controlling the processor's components, and even a primitive form of instruction pipelining.


The Seas of Mars

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 there will one day be proud ships sailing that vast Northern Ocean...


Energizer UPS Linux Driver

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.