Mar 1986 - Mar 1988. Vertical Software Australia, Australia

Task: Performed Maintenance on Dentics
Skills: PC-XT, MS-DOS, Netware, C

Vertical Software had developed a vertical market package for complete management of dental practices. The software (Dentics) consisted of 80,000 lines of C. Dentics was designed to be run on a Novell Netware network of IBM PC's. Vertical developed their own database software which had some very powerful capabilities; database files contained multiple logical files which contained either B-Tree index data, or compressed variable length records. All updates to the database were logged as compressed deltas to a nominated floppy disk on the network. All data entry and display forms were stored in one database, allowing the non-overlayed main application to contain over 300 individual forms.

My initial tasks with Vertical involved enhancements to extend the functionality of several on-screen reports.

Task: Found Most Elusive Bug
Skills: PC-XT, Venix, Lint

Every programmer who joined Vertical was given the task of finding "The Bug". I decided to "port" the code to Venix (a Unix clone) in order to use lint. After one week of solid porting, I had located a possible cause of the bug - a missing pointer in a variable parameter list. I hand analysed the compiler output for the code in question and determined that the uninitialised pointer always pointed to a safe area of memory. I surmised that there was a very small window of opportunity where a hardware interrupt just before the function was called might cause the pointer to assume a value resulting in overwritten interrupt vectors.

The bug was never reproduced in the lab, so I was not able to prove that I had found it's cause. After releasing my fix, the bug never occurred again.

Task: Implemented Multiple Reader / Single Writer Locking
Skills: PC-XT, MS-DOS, Netware Semaphores

My first development task was to redesign and then develop code using Novell Semaphores to implement a multi-reader / single-writer strategy. In the locking API I implemented functionality that would provide warnings when application code performed actions that could lead to a deadlock.

Task: Developed Data Entry Form Editor and Database Editor
Skills:PC-XT, MS-DOS, C

I developed a number of utilities including a program which allowed the data entry and display forms to be edited in place (in the database). Another utility was a generic database editor. All database API primitives could be performed on arbitrary record structures that were specified in external C-like configuration files.

Task: Was Promoted to Team Leader

In December, 1986, I was promoted to Development Manager and I assumed the added responsibilities of writing all specifications and development scheduling for Vertical.

Task: Redesigned and Reimplemented Accounting Module
Skills: PC-XT, MS-DOS, C

I discovered a bug in the design of the accounting module in Dentics, then enhanced the design to eliminate the problem and implement a series of new features. A programmer under my supervision and I wrote the module according to my specifications. Successful installations in the field began in September, 1987.

Task: Ported Dentics to SunOS Hosted Cross-Development Environment
Skills: Sun 3/50, SunOS, HiTech C, Make, RCS

Vertical purchased two Sun 3/50 Unix Workstations and I helped port Dentics from the PC development environment to a Unix based cross-development environment. The other programmer placed the code under RCS and created Makefiles to automate the build process.

Top of Résumé