Over the years I have developed a collection of original algorithms in
order to provide reusable code that can be used in multiple applications.
Some of these algorithms were written in procedural languages as long as 25
years ago for use in my research and teaching. They have since been put into
an object framework and rewritten in C++. The most powerful of these algorithms
is a proprietary decision support engine, a collection of C++ matrix classes
that incorporate the rules of matrix algebra and — via operator
overloading— allow C++ programmers to perform complex matrix operations
using simple notation. The applications shown on this page give a demonstration
of these algorithms, some of which have also been used in client applications.
Billable Hours, customizable client billing system for
consulting firms, accounting firms, law firms and other entities that
bill professional services by the hour. It permits consultants to
"punch in" and "punch out"; calculates periodic totals for separate
projects and clients; tracks expenses by consultant, project and
client; generates and prints billing statements and reports; provides
four levels of security; ages accounts; calculates discounts for early
payment; and formats, prints, and emails statements. Now available for
free download.
TLPWin linear optimization software, a general purpose
linear programming application capable of solving integer and mixed
integer as well as real-valued problems. Linear programming can be
used to solve a wide variety of resource allocation and planning problems,
and the technology at the core of
TLPWin can be adapted and
customized to fit a client's particular needs. This version, which
features an intuitive, easy-to-understand user interface, is available
for free download on the
Downloads page.
TransPlan route optimization software, which permits a
user to derive an optimal shipping schedule for moving units of a
product from multiple sources to multiple destinations.
TransPlan uses a traditional transportation algorithm, modified
by an efficient labeling rule, and employs the modified distribution
method to determine the best routes to introduce into the solution. It
can also be used to solve assignment and shortest-route problems, and
the technology that drives the software can be adapted and customized
to fit a client's special needs. This version has an intuitive user
interface and is available for free download on the
Downloads page.
Century 3.12 event management system, which keeps track
of registrants, volunteers and community contacts, and generates
mailing labels, registration lists and other reports for cycling
events. To get the latest release, go to the
Downloads page.
WinBreaker file splitting software for
MS Windows,
which breaks up flat sequential data files into separate table-like
files for importing into relational databases.
WinBreaker is
available for free download on the
Downloads page.
CashMan account management software, which manages
multiple deposit and credit card accounts, facilitates interaccount
transactions, allows users to access their accounts via their banks'
and card issuers' websites, and permits users to easily query their
accounts and print user-designed reports.
A suite of JavaScript real estate financing calculators that make it
easy to calculate monthly payments on mortgage loans, calculate and
compare true annual percentage rates on new loans and mortgage
refinancings, and determine an affordable house price given downpayment
and monthly payment constraints. Any of these calculators can be
localized and customized for real estate websites. This suite can be
accessed on the
Calculators page of this website.
A set of custom edit controls for Embarcadero's (formerly Borland)
C++ Builder 6.0 application development software designed to
minimize errors while entering certain kinds of data. These controls,
which developers can install onto the components palette of the C++
Builder IDE using the provided component installation program, are
available for download from the
Downloads
page of this website or from from the "Code Central" page of the
Embarcadero
Developer Network website.