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.
Pocket 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.
Radio Frequency Spectrum MonitoringCustom 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 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.
Letter Carrier
Route Map ColoringCustom 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-Reach: A Vendor-Independent Web
Server Database ExtensionCommercial 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.
Programming Windows 98/NT UnleashedTechnical 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++.
Linux: A Network Solution for your
OfficeTechnical 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.
MUD: 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 at the end of the 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.ORG - A Museum of Portable Programmable CalculatorsNon-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.
The
Gamma function: an arbitrary-precision
implementationResearch 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.
The W
Programming LanguageEducational 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.
A 4-bit ProcessorHardware 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 MarsWeb 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 DriverHardware 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.