Technical Skills


Weaving the Web

I have now been developing software for the Web for five years, concentrating on adding server-end intelligence, to allow the delivery of attractive and exciting systems to even the most limited browsers. Early Technology Ltd is a realisation of my technical vision here.


Knowledge Engineering

I am one of the originators and the primary developer of The KnAcq[TM], which remains the only methodology for expert systems development which can formally guarantee that the knowledge bases generated are logically correct, complete and consistent representations of what was expressed by the expert at interview. I was responsible for the design of KnAcqTools[TM], and personally wrote the KnAcqTools code generators for NEXPERT Object, KES, Leonardo, Crystal and Xi Plus. I have built numerous commercial expert systems and have taught courses in knowledge engineering to a number of blue chip companies. I have extremely wide experience of expert systems tools.


Software Practice and Experience

I have been designing and building systems for WIMP GUIs using object oriented design and object oriented languages since 1985, and have now programmed extensively for five different GUIs. I am known both as an exponent and a proponent of the LISP language, having wide experience of LISP variants on a wide variety of platforms, and having served on the BSI working group on LISP. I initiated and initially co-ordinated the port of CMU Common LISP to Linux (but did relatively little of the actual work). I have a very high regard for both Franz Allegro and Harlequin's LispWorks Common LISP implementations.

Since 1996 I have concentrated on the Java language. While this is widely seen as a means of delivering 'eye-candy' for the Web, I value it for its high level abstractions, its good memory management design, and its portability. These factors taken together greatly lower the cost of delivering, supporting and maintaining multi-platform applications.

I also have experience of ProLog and other symbolic programming languages, as well as lower level languages such as C. I have experience with numerous operating systems, including many UNIX variants.


Technical Manifesto

My reasons for preferring higher level languages are pragmatic: processors are cheap, but programmers are expensive. Consequently I value those tools, such as CASE tools and rapid prototyping environments, which optimise programmer productivity.

I have inevitably worked extensively with Microsoft Windows in many variants including 3.1, 95, and NT4. Inevitably a CV is a document which develops over time, and I first wrote in 1993:

I don't consider Windows in any of its guises to be a sufficiently robust or well engineered operating system for professional development or for commercial use.

This is still my considered opinion.