I have attempted to compile a complete list of software and systems I have designed and/or written.
Small and insignificant projects are not included, but projects written for both fun and money are
included.

First, here is a variety of stuff I
wrote before I was 17. Unless your name is Kirk Bauer, or you have ever heard of the Virtual BBS (VBBS)
software, you probably will not care about any of this stuff ;)

In 1995, I wrote a program called Shelf Status for a group of McDonald's franchises in Spokane, WA.
This program took the bi-weekly inventory and daily sales data and generated a variety of reports,
including product variance. This variance would help identify theft and waste by comparing the
actual inventory used with the amount of inventory that should have been used based on sales.
This was my first commercial product and was completely designed and written (in QuickBASIC) by me.

Also in 1995, I created a bootable floppy that could identify and repair problems with DOS systems
at a Spokane high school. The one disk worked on all systems. It checked for and repaired problems
ranging from drive partitioning to software configuration. This was the first time I dabbled with
system administration automation... even if it was only DOS.

Around this time, I wrote a variety of personal programs that made it to various stages of completion.
This involved a character recognition system (C++), a fully operational windowing system for DOS
that supported movable windows, multi-tiered menus, buttons, and other controls (C++), and a framework
for a very powerful Point-of-Sale (POS) system (C++).

Residential Network Department, Georgia Tech

In 1996 I designed and created a Web-based call-tracking system for the Residential Network department at Georgia Tech.
This was written in C++ and supported ticket creation, assignment, modification, listing, and resolution.
Full administrative support and reporting was provided. This system used the CGI interface provided by
the Apache web server running on Red Hat Linux (either 3.2 to 5.0).

In 1997 I created a comprehensive set of web-based tools to provide custom email addresses and hostnames
to students. This suite authenticates students using a Kerberos server and provides students
with a complete set of web-based management tools. It also provides powerful administration and reporting
features, all available on the web. This was written in Bourne Again Shell (bash) scripts and used Apache's CGI interface.

In 1998, I created a very fast network monitoring system using SNMP and other tools. The system creates a
real-time, web-based status of all the network hubs and switches. This was written in Perl.

Open-Source Software

In 1997, I designed and wrote "autoupdate", which was a bash script for installing updated RPMs on Red Hat Linux
systems. This was so popular that it prompted me to write AutoRPM.

Also in 1997, wrote AutoRPM, a flexible program written in Perl that detects and installs security patches on
Red Hat Linux or any other properly configured UNIX platform. Also used by many system administrators to
maintain large numbers of UNIX machines. Can be used to fully automate system updates in almost any environment.
This was my first Perl program and is still actively maintained and used today.

With way too much free time in 1997, I also started work on LogWatch. This is a highly configurable log processing
program written in Perl. Logwatch is designed to summarize the contents of system logs so that a system
administrator can get a concise summary of the events in the log and decide whether further inspection is necessary.
Now included as a standard component of Red Hat Linux 7.2 and 7.3. This system is designed to operate on any UNIX
system and it uses a very flexible interface for adding new log filters.

AutoScrapbook is a program that creates and manages
web-based photo galleries out of digital pictures.

image_backup is a program that makes archive CDs out of digital images
for backup and archival purposes.

mp3Rip is a program that automatically identifies and reads music from
CDs and converts them into MP3 files.

ProjectAdmin is a project currently in development that makes it easy
for a software developer to automatically manage, build, release, and
track a software project (currently used for both AutoRPM and LogWatch).

Georgia Tech Research Institute

From 1996 to 1998, I was part of the team that designed and implemented a new, unified, electronics warfare
system for the C-130, H-model gunship. This was written in Ada88 and ran on VxWorks. It consolidated
information (from the 1553 data bus) from various sensors on the aircraft and displayed the information in a
useful manner. Also provided manual and automatic control for chaff and flare dispensers as well as jamming equipment. Also provided
for a testing mode that simulated a variety of situations and allowed the users to respond appropriately.

Also wrote software in C that ran on a small embedded processor (can't recall the name) that simulated a variety
of components on the 1553 data bus. This was used to test the software mentioned above without actually having
all of the components available. It simulated a flare dispenser, for example. It also logged data and calculated
response times (i.e. time between missile detection and flare dispense) and transferred this data over a wireless
modem to a laptop on the ground. This is a good thing, as one of the missles missed and cut the cable, causing
this unit (along with the VxWorks system and other components) to fall 700 feet to its death in the rocky canyon
below.

For a different department, automated almost all of the system administration tasks across the machines using a
custom set of administration tools written mostly in Perl and Bash. Automation scripts included a set of scripts
that will take a new Solaris machine and completely customize to our standards and integrate it in the network in
about one minute.

Also for the different department, created a very powerful and user-friendly front-end to our Linux-based printing
server. This system allows users to login and manage/monitor our wide variety of about 40 printers. It allows
users to see the status of each printer, including a listing of jobs and errors.

Georgia Tech (1995 to 2001)

Wrote a variety of software in C and Java for various classes, including a fully featured UNIX shell.

For my senior design process, in addition to working with a team designing and testing a processor using
VHDL, I wrote a fully featured assebler in Perl. This assembler can assemble code for almost any processor
with the proper configuration file.

Wrote a variety of programs in assembly and C for the PIC microcontroller.

Fermi National Accelerator Laboratory (1999 to 2000)

Created a very powerful program that monitors all changes to a given Linux machine, including configuration
changes and installations of new programs, and stores these changes (optionally on a central server) so they
can be performed again in the future. Using this database of changes, the software is able to restore a
computer to its state as of any previous date, either by undoing changes on the machine, or by re-doing
changes on a new machine. This software uses a variety of technology to efficiently store this information.

TogetherWeb (1999 to 2002)

Designed and implemented the server side of a client-server application in C++. The server was designed to be
very efficient, very reliable, and handle large numbers of simultaneous connections. It is composed of 3 major
components, each multi-threaded. The system can be configured with as many of each component on as many
machines as is desired for both load balancing and redundancy purposes. If any number of copies of a given
component are taken down, the remaining components take over with no loss of service to the customer. When the
missing copies restart, the other components rebuild that copy so it can resume operations.

Designed and implemented a fully self-contained ``internet appliance'' running Linux. The system had fully
automatic installation, monitoring, backups, and other administration tasks. Full web and console-based
configuration system allowed every aspect of the system to be quickly configured: network settings, SSL
certificates, application settings, etc. Written with bash scripts, with a Mason-based web interface
(Mason is like jsp for Perl).

Helped with the design (and parts of implementation) of a special web proxy server written in C.
This proxy can share web data among several browsers and perform numerous complex modifications to the pages.

Designed and implemented numerous web-based monitoring and administration scripts for all of the aforementioned
systems. This includes log filters, debugging tools, monitoring scripts (with automatic restarts), etc.

Wrote a food system in Perl that provided billing, inventory, and reporting for the office food supplies.

Design and development of a set of tools to automatically create RPMs directly from information in CVS and
add these RPMs to one or more custom Red Hat Linux distributions. This system is very powerful and
supports branched distributions with automatic propagation of most changes to the branches. Full audit
logs are maintained and any previous build of any distribution can be installed on any system necessary.

Design and development of a complex system configuration and template language that provides fully
automatic, yet robust, configuration of a wide variety of installations across any number of systems.
This system provides fully scoped variables, hashes, arrays, etc. The templates can contain logic and
loop structures.

Created a fully automatic system update system using AutoRPM and other tools (such as rsync).

Designed and developed a full web interface that allows package builds, management of the custom Linux
distributions, and full monitoring and control of installed systems.

Conceived, designed, and developed a proxy server that can automatically
convert any customer's web site into a web site "tagged" to work with the
Proficient Sales Server.

Home Automation with Misterhouse (2003 to present)

Extensive work on the occupancy tracking and automatic/predictive lighting
code. This is code that uses a network of motion detectors to track the
number of people in your home and which rooms they occupy. This can be used
to automatically provide lighting for all occupants without the use of
light switches, including predictively turning on lights in rooms before
you actually enter.

Wrote a complete Misterhouse interface for the RCS TR40 residential thermostat.

Wrote a complete Misterhouse interface for the Netstreams Musica whole-house
audio system.

Designed and implemented a hardware and software based solution to allow
the control of a set of Hampton Bay ceiling fans using RF.

Created virtual audio routing software that is used to provide the illusion
that a whole-house audio system has more sources available than it can
physically support by intelligently routing real sources to real source
inputs upon demand.

TechHomes.com (2005 to present)

Did entire web site design and implementation in PHP: www.techhomes.com (work in progress!).