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.