CVS

OBJECTIVE

Since I first became aware of the subject of Computer Science, the following are my primary professional objectives:

  1. To design and implement intelligent systems; systems that have such high levels of automation as to greatly simplify their use and understanding by any user of them.
  2. To design and implement systems so well that no maintenance is ever needed.
  3. Build accurate models of  systems.

Introduction

    I have over twenty years of experience as a consultant. In those years I have design and implement software for the Financial, Technology, Industrial and Manufacturing industry. Exemplars of the types of systems that I implemented are: Trading systems, Portfolio management systems, Performance measurement systems, Quantitative Analytic engines, Software Game development, Satellite ground control and instrumentation, Systems that involve Multi and Parallel Processor and the utilization of MPI and Single-System Image Clustering, Expert systems, Neural Networks and Evolutionary and Genetic Algorithms systems, Device Drives, and Embedded system development.

Technologies

    In that time, I have gained much experience in large scale software development using a combination of techniques such as Object Oriented (OO) Architecture, OO Design, OO Development and OO Programming. Although the object oriented methodologies are my primary methodologies I do strongly pursue and practice Declarative and Functional Programming methodologies even when these particular methodologies are not supported within the given computer language. It is currently my belief that knowing and practicing these two mythologies will greatly improve the quality of any
    software developer’s skills..

    Within the span of my personal and professional life, I have had the opportunity to develop software under a number of relatively modern operating systems such as the various versions of Microsoft Windows starting from version 3.0, various incarnations of UNIX such as LINUX, SCO, AIX, XENIX, HP UX, and even MINIX. Even earlier in my career I was writing software for operating such as Microsoft DOS, CP/M, Concurrent CP/M, Turbo DOS and MP/M. All were interesting in how they managed the computer resources, even more so was the challenge in how to maximize the usage of their limited
    resources.

    It was often necessary, in the early years, for me to write device drivers for Microsoft Windows and DOS, and CP/M. Knowing the particular operating system requirements and API’s to write a type device driver was not always enough. In the early years it was often necessary to have the skills of electronic hardware engineer; being able to fully understand the design of the hardware. I still retain those skills as can be clearly seen by viewing my web pages on electronics and enjoyment in maintaining old S-100/IEEE-696 computers. Once the hardware and operating system requirements were
    understood the process of writing interrupt service routines (ISR) and direct memory access (DMA) was usually straight forward and repeatable for other types of devices. It is my hope to eventually have the opportunity to write a device driver for UNIX/LINUX operating systems. From what I currently understand the task will be easier than to write device drivers for MS Windows.

    Out of necessity and the joy in working directly with the operating systems API’s I gained a strong understanding of multi-threaded, distributed, intra and inter processing communication software development. However, only if absolutely necessary do I attempt or recommend to others to do this type of software development using the operation system’s native API’s. It is far much simpler and portable to use The ‘ADAPTIVE Communication Environment‘ (ACE) or the Boost. Asio library from the BOOST C++ Libraries. These are well tested products with performances comparable to those of hand write native API calls.

    For true parallel processing I have found openMosix, a Single-System Image Clustering extension to LINUX, to be quite effective when using the Message Passing Interface (MPI) libraries. Interestingly enough there is now the Boost.MPI library, a project with in the BOOST C++ Libraries, for MPI software development. Than library is now my library of choice to write true distributed parallel processor applications.

Computer Languages

    C++ is my computer language of choice. I have been using it for more than nineteen years; since the year 1989. The last Brain Bench test I was forced to take placed me, to my surprise, in the top 5% of C++ developers. To this date with the possible exception of the MAUDE and the PROLOG like programming language MECURY I do believe there to be a tremendous advantage in making any other language my preferred programming language.

    MAUDE, I have been consistently using since the start of 2008. PROLOG I have had a sporadic relationship with it since 1988. MECURY, basically a better PROLOG with some advantages over HASKELL I just started reviewing it in July 2008. I have high hopes for their use in future project; at the very least declarative programming styles of all three languages does have a strong influence of my C++ programming style, since I strongly endorse the top down approach most of the times. The top down approach implies you understand the problem. Bottom up means that you are experimenting in how to bring about a solution; which is often useful.

    Although I have about five years exposure to JAVA, C#.NET I consider them a waste of my C++ bandwidth and usually
    only take relatively short term positions/projects using those languages unless I don’t have any other choice. Up till now I have been lucky.

    Throughout my career I have used on actual project SMALLTALK, Delphi, Object Pascal, FORTRAN, Microsoft Visual Basic, OCCAM, COBOL, NEAT 3, PROLOG and a number of machine languages/assembles for various CPU such as Intel 80386/80186/80286/8086/8088, Z80, 8080, 6502 and 68000. All good and enjoyable experiences at the time.

    For a time my programming language of choice were PASCAL, FORTRAN, and SNOBOL 4 until I discovered C, C++, and PROLOG in the nineteen eighties. I am still looking for that one great language that will significantly ease my software development experience. MAUDE and MECURY, more MAUDE in particular, seems to be a preferred choice over C++ for high level application development. However, C++ with its multi-paradigm methodologies; Objective Oriented, Generic, and Imperative along with the BOOST C++ LIBRARIES and overall performance has certainly made it difficult to abandon. Additionally, given as examples the BOOST Lambda, MPL, Spirit and Sprit.Pheonix libraries I do believe the powerful paradigm of rewrite theory and declarative programming as exemplify by MAUDE and MECURY / PROLOG respectively can be brought under the heading of BOOST C++ LIBRARIES. If I even get time it could be me do who accomplishes this.

Databases

    Throughout the years I have had the opportunity to use a wide range of database management technologies such as: SYBASE SQL, Windows SQL-Server, MYSQL, Postgre-SQL, INGRES SQL, DBASE II/III, CLIPPER, BTRIEVE,  and Object Oriented Database such as EYEDB and POET. EyeDB is a wonderful open-source Object Oriented Database Management System (OODBMS) based on the ODMG 3 specification

    Other SYBASE technologies I have worked with are Open Server and Open Client API’s. Using the Open Server/Client API’s I have written application that intimately interact with the SYBASE SQL: Server. From a C++ library developer perspective I have written C++ wrappers for the Open Server and Open Client that were superior to the Rogue Wave C++ libraries.

    Given the choice I would choose ODMG3 for the simple reason interfacing with the underling language is seamless and the overall performance of a network database is usually faster than relational database.

On Going Research

    Artificial Neural Networks, Fuzzy Systems, Genetic Algorithms, Evolutionary Algorithms, Expert Systems, Learning Algorithms, Text Mining

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>