David’s introduction to computers and computer programming was in 1976, when he took an elective course at school. That was a turning point in his life, which determined his future career. Over the next three years he learned the computer languages APL, BASIC,
This early interest in systems level programming|
... can be seen in his many innovative solutions
Over the years David has continuously added to his skills, adding various languages, operating systems, database managers and applications. He currently spends most of his time working in C, C++, PL/SQL and AWK, mostly on the Unix platform but occasionally under Windows.
David’s first programming job was in 1978, when a department at Flinders University of South Australia contracted him to convert a program to analyse census data from SPSS to Fortran.
In his career he has written a number of systems, including a generalised stock management add-on for an existing debtors and creditors system (CBASIC, CP/M), a time disbursement database (BASIC, Apple ][), two payroll applications (Pascal MT+, CP/M, and Pascal, UCSD p-System), a petty cash application (Pascal, UCSD p-System), two integrated accounting and policy management system for insurance brokers (Pascal, Apple ///, and UCSD p-System), a report program generator (UCSD p-System), a database program generator (p-System), a tele-ordering and accounting system for a pizza franchise (C, Unix), a database manager (p-System), a window manager for dumb terminals (p-System), a reporting language for end-users (p-System), various synthetic user benchmarks (Unix), system management tools (C, Unix), a scripting language (C, Unix), various machine drivers (6502, C, C++), and much more.
Although David prefers programming, he has worked in many positions, such as pre- and post-sales engineer, customer support adviser, systems programmer, project manager, manager of programming, director of networks, lecturer and general problem solver. This wide range of experience, coupled with his “can do” philosophy, has resulted in great versatility. Having over 25 years experience, it is easier to say what David can’t (or won’t) do than what he can. David has no experience with serious mathematical programming, such as games, real-time graphics or aviation control; he can’t sell; and he no longer does hardware repair because it’s too hard on his knuckles.
David wrote an insurance broking system, which manages accounts and policy portfolios. This is a multi-user, client/server system, written in Pascal for the UCSD p-System. In a triumph of programming over salesmanship, David had less than ten installations, all from referrals, despite the fact that his customers all love the system for its ease of use, clarity of design, accounting accuracy and system reliability. Considering the total number of people using the system, in almost 50 man-years of use the total down-time due to system failure is less than two months. In fact significantly more time has been lost due to hardware errors than to software failure. This result, which beats all industry norms, is no accident; rather it illustrates David’s demanding technical standards.
Software is a tool that should facilitate, not direct,|
the task the user wants to perform
This insurance system is multi-user and runs without change on hardware ranging from IBM PC through to VAX. It has a lovely user-interface incorporating a window manager for dumb-terminals, and includes a user-specified reporting system. During the design phase, David spent eight months in the offices of three different insurance brokers in order to ensure that the system would have general applicability. This partnership between (target) industry and programmer resulted in a system that was more than easy to use—it was intuitive. David is a firm believer that software should not be designed for idiots, but for the people who need to use it. He says, “software is a tool that should facilitate, not direct, the task the user wants to perform.”
One of David’s more satisfying projects was to work, as part of a team, on integrating a legacy accounting system with a new GUI.
When the customer needed a new application for|
telephone calling cards, they designed it using
their familiar legacy tools, and integrated it using
David’s scripting language
Just to make the task really interesting no change would be made to the accounting system to accommodate the new GUI, and no direct access was permitted to its database. All access to that system was to be through its terminal interface (ie application screens.) David solved this challenge by creating a small, BASIC-like language to permit scripted control of the accounting system. The legacy system saw the new application as a bunch of normal users, and the new GUI saw the legacy system as a transaction-oriented server. This solution was so successful that when the customer needed a new application for telephone calling cards, they designed it using their familiar legacy tools, and integrated it using David’s scripting language.
The new system supported up to 400 concurrent users, accessing services from five different sources via a Tuxedo application running on a i486 computer.
The senior mainframe programmer was very impressed with the integration technique that David devised. He said a substantial hardware upgrade would have been needed if those 400 users had logged on directly. This significant cost saving was a pleasing, if unexpected, benefit of David’s solution.
David helped set up a small ISP, and operated it by himself for many years. The system grew to support ten modems, a multi-zone firewall, multiple web, ftp and mail servers, an internal and external name server, and a web proxy cache, all of which were implemented as applications running on either Linux or FreeBSD.
To support the ISP service, David wrote a billing system, a program to monitor and control modem use, and a program to dynamically adjust modem bandwidth according to the amount of data that each user had downloaded.
A substantial hardware upgrade would have|
been needed if those 400 users had logged on
David developed an interest in Web applications, and wrote variously an e-mail client, a download monitor, a usage chart, and an invoice generator. The latter is quite useful: It displays an invoice form in any browser, and after the user keys and submits the data, a professional looking PDF document, complete with company logo, is returned for local printing or emailing. This facility is also used in automatic mode to generate and email invoices to large customers who bulk-purchase Internet access.
David worked on a team that produced the software to control a robot wool sorting line. The software is written in C++ and runs on a pair of Pentium class computers running the Linux operating system. David was responsible for the low-level control APIs, and all communications between the computers and the hardware controllers. A feature of these APIs is that a simple text file describes the complete hardware configuration, which supports multiple communication channels each with multiple controllers. No change is required to the application after wiring changes, such as moving a controller from one channel to another after load balancing.
David is widely skilled. He is good at listening to users to understand their needs, and then talking with them to design a solution that will work for them. He understands client/server architecture, and was programming using this model even before the term was popular. He sees object oriented programming as the natural way to code, and uses these techniques even in traditional languages such as Pascal and C.
David’s successes encompass business applications, real-time programming, language design, compiler construction, communications drivers, hard disk drivers, system management, systems programming, web design, database management, report program generators, window managers, device independent systems, Internet, TCP/IP and more.
His chief interest currently lies in unix-systems, and he believes that unix is best suited
Call him Geek; call him Guru; there’s no|
doubting that David is talented, motivated,
self-confident and capable
David is reliable and self-motivated. While his skill set is impressive, he has never let lack of experience with a needed tool get in the way of the job. Probably the greatest quality that David possesses is that he loves working with computers.
Call him Geek; call him Guru; there’s no doubting that David is talented, motivated, self-confident and capable.
(04) 11 12 13 41
|1997||Member of the Institute of Electrical and Electronic Engineers|
|1996||Member of the Association for Computing Machinery|
|1995||Member of the IEEE Computer Society|
|1987||Member of the Australian Computer Society|
|1985||Affiliate of the Australian Computer Society|
Apple ][, ///, Macintosh
Assembler for 6502, 6809. 68000, 8086, Cyber 173, Z-80
Informix RDBMS, I4GL