System architecture, requirements analysis, design, and/or software development, using advanced technologies to build high-quality systems. Capable of adopting a senior team-member, lead, management or mentoring role as required. Very familiar with distributed systems, including Application Servers and Service-oriented Architectures.
Electrical Engineer, computer concentration, with experience in team leadership and project management, an extensive background in software languages, computer system design, and software system design.
Ada, Assembler, Batch files, C, C++, HTML, Java, Lisp, Pascal, Perl, Prolog, Python, REXX, Shell scripting, SGML, Smalltalk, SQL, VRML, UML, XML, XSLT.
Familiar with structured and object-oriented design methodologies, and very aware of language/tool implementation issues and their impact on the use of each language or tool in application development and platform targetting.
API design and use, CORBA, ClearCase, CMS, Constraint programming, DB2, EJB, Emacs, Envy, Expert Systems, GNU, Ilog, J2EE, JBuilder, JDBC, Logic programming, Lotus suite, Lumos framework, MKS, MQSeries, 3D Graphics (page design, software support), Object-oriented (OO), ODBC, OpenOffice (StarOffice), Oracle, Ramis, Rational Rose, Parser design, PVCS, Spreadsheets, Swing, TogetherJ, TrueSpectra, VisualAge family, VisualWorks, Word, WordPerfect, XVT libraries, X Windows.
IBM PCs and mainframes, HP workstations, VAX minicomputers, Sun workstations, AS/400, VME-bus computers.
DOS (with and without Windows), MVS, OS/2, HP-UX, Unix (SCO, Linux, Solaris), VMS, Windows (2000, NT, ME, 98 and 95).
Apache, Domino, Orion, WebLogic, WebSphere.
B.A.Sc., University of Ottawa, Electrical Engineering, Computer Option, 1987, cum laude, and Dean's honours list.
Self employed as a system developer and consultant. Projects have included telecommunications software, distributed multi-tier retail pricing solutions, web commerce, military processors and operator interfaces, graphical user interfaces (GUI), simulators, document storage and retrieval, expert systems and software process improvement. See attached project summaries for details.
Senior Electronic Support Measures (ESM) Engineer, Lockheed Canada (formerly MEL), head of a software section ranging from six to ten persons. Major projects included a new-generation ESM processor in Ada, and assistance to a research-oriented ESM processor in Smalltalk. Innovations for Lockheed included software standards for an object-oriented use of Ada, specification of a Smalltalk ESM Simulation project to be subcontracted out, use of inexpensive development and final platform hardware to minimize costs and final system prices, and use of Prolog to develop in-house tools quickly and at low cost.
Artificial Intelligence (AI) software engineer for Thomson CSF Canada Ltd. Contributed to design and specification of a Threat Assessment and Weapons Assignment simulator to be implemented in Smalltalk with expert system extensions. Designed and led implementation of a Prolog-based system for automating system specification capture and verification. Administered HP-UX system for development of the prototypes.
Summer employee and later junior engineer at AIT Ltd. Assisted with Canada Post electronic mail system, the WINDII upper atmosphere satellite project, and a prototype expert system for automated document capture and classification.
Software engineer for Department of the Solicitor General for Canada. Obtained experience with IBM mainframe software development, with 4GL languages and with end-user support on Personal Computers.
Business Requirements Analysis and documentation for Ontario Ministry of Government Services, in support of a computerised Stakeholder Management system and new elements of a Web Services framework.
Responsible for software architecture system-wide, and for development team methodologies and standards, for a large distributed system. The Synchronous Manufacturing System being built for Stelco's Cold-rolled and Coated production facilities must support existing and new business and manufacturing systems seamlessly. Work included defining and prototyping a coordination-based architecture for distributing processes across client PCs, PC Servers and Mainframes; defining and building a programming-language-neutral interface control technology which exploits XML and XSLT to generate interface code in multiple languages, and IBM MQSeries to provide a reliable message transport layer; ensuring that the architecture and deployment strategy can support stepwise migration as the new system first interoperates with the legacy parts and then gradually replaces them; and defining and supervising the implementation of various software frameworks for cross-cutting concerns such as Security, Audit, Logging, Performance Monitoring, etc. The main new development is in VisualAge Smalltalk, and the interface code is created for Smalltalk, VisualBasic, COBOL, Fortran and Java.
Team lead for user interface development for a distributed Element Management System for new optical network telecommunications equipment. Environment includes UML design tools, all-Java client and server development, XML processing for support files and documentation.
Participated as a team member in the maintenance of graphical user interface software for provisioning of the Passport series of Nortel telecommunications switches. Environment was VisualWorks Smalltalk with Envy version control. Provided expertise in evaluating the costs and benefits of various options for porting the software to VisualAge Smalltalk platform and to Java.
This system maintains the documents to be served to the web in XML format in an Oracle database, and uses XSLT to render the documents into HTML Web pages. The pages are customised at rendering time to include branding information for the service provider's various clients. Supervised the automated conversion of a large library of content documents into XML format. Evaluated several XSLT engines for conformance and performance. Participated in the development of Java classes to access the data in Oracle, and a custom Java rendering engine to provide high-performance inclusion of the brand-specific information in the generated pages. Each of the HTML pages is typically generated from several small XML documents, some brand-specific formatting and decoration, and one or more major XML documents. While most of the content requires access permissions you can see the portal at LifeCare.com.
This system combines multi-tier architecture, relational database, Java client and server components, logic-programmed business rules, CORBA communications and interfaces, and XML for data transfer amongst modules. Developed the business rules module for deployment on a Solaris server, designed the XML interfaces to permit the rules in Prolog to communicate efficiently with other modules in Java, and implemented the Java classes to obtain data from the relational database on request from the business rules module. The Java classes on the server side make use of both an object-relational mapping layer, and some direct SQL access from Java. See Armature Integrated Retail Solutions.
Developed complete server-side software for secure web commerce for the Musical Ride Boutique of the Royal Canadian Mounted Police. Supervised photography, and created the Web imagery for the on-line catalogue. Developed Windows-based utilities for catalogue maintenance.
Software team lead for the displays segment of the R/SAOC modernisation program. This program implemented the modernised R/SAOC real-time situation display and tabular display interfaces in C++ in an environment consisting of multiple SparcStation computers running Solaris, and a CORBA layer to support distributed computing. Installed and configured Solaris operating system.
Assisted the functional manager, Software Engineering, of Computing Devices Canada (a General Dynamics company) with document content, and process improvement. This task helped to move the company from SEI level 2 towards level 3 in the Capability Maturity Model (CMM) of software engineering process. Created an automated document assembly and generation facility to publish the software engineering standards of the company. These standards are based on tailoring MIL STD-498 software processes, and the automated system consists of standards-compliant document content with attached instructions, and a means of generating project-specific documents rapidly. See next item.
Proposed and implemented a design for a storage mechanism and Common Gateway Interface (CGI) programs that allow end-users to assemble and tailor documents through ordinary Web browsers. The suite of programs also includes a document-outline authoring utility. All programs run on Windows NT/95 and OS/2. The CGI programs also run in a Sun Solaris environment.
Provided data communications expertise and software implementation to support on-line data backup and recovery using Internet connections. The system to which this component has been supplied is being used by DriveWay (formerly Atrieva Inc.) and their customers. Implemented a prototype using MQSeries as the middleware, and another using custom TCP/IP bindings and Internet Protocols for the client and server. The customer selected the TCP/IP version as conforming to their market model. Installed and administered SCO Unix systems for software development.
Assisted a team with translation of a successful Windows-based connectivity product to the native 32-bit OS/2 PM environment, using the SMART tool and prior PM to Windows manual translation experience.
This subsystem, implemented in Prolog, forms part of an Emergency Preparedness computer support suite built for Industry Science and Technology Canada. It comprises a complete toolkit for the definition of uni- and multi-lingual lexicons and thesauri, the complete or partial indexing of large bodies of documents both under operator control and in batch mode, and the browsing and retrieval of information from such document databases using flexible search criteria and a natural-language query-by-example front end. It is characterized by a simple user interface, especially for the database query and search, and makes extensive use of pattern matching, fuzzy logic, and object-oriented database techniques. It is fielded both as a standalone system, and as a server for client programs requiring access to the document databases across a network. These clients include tutorial systems and expert systems, both of which can embed their queries in persistent objects, allowing them to return new material at the same point in the tutorial or consultation as the document databases evolve, without requiring any maintenance of the tutorial or expert system itself.
This system, implemented in C under Windows 3.1, is a custom development for Fulcrum Inc., in support of one of their customers wishing to use their search engine on several different platforms. The Fulcrum C libraries (text retrieval) were integrated with the XVT libraries (portable GUI Application Programming Interface) and compiled in the Windows environment. The tested code was then compiled in the Sun workstation environment and a Text-mode terminal (Vax) environment. The final system provided all search and retrieval facilities on all three platforms, each with the native look and feel of the platform environment. An OS/2 PM version was also compiled to test the XVT portability.
This is another portion of the Emergency Preparedness computer support suite. It is also configurable as a standalone application or a subsystem. In the latter mode, it forms a part of the tutorial system described below. Hypertext documents are now becoming familiar in the on-line help systems for OS/2, Windows and some Unix environments. However, the majority of such systems require labour-intensive authoring, often using tagged text languages and compilers. They also suffer from some inflexibility once fielded: adapting the document to a new audience amounts to a complete rework of the same material. The ISTC hypertext system allows the integration of expert system rules with hypertext links. This means tremendous new power and flexibility, and a reduction in the need for multiple versions of documents and much periodic rework. For example, an expert system rule on a l ink can check the user's identification and class, and tailor the information presented to the user: an analyst might receive a complete copy of a regulation in response to a mouse-click on the reference to it, while a manager might receive an executive summary of the same regulation, with option to view the complete version in the summary panel. Links can also run document database queries and present the returns as hypertext panels. These and other features make this a significant advance over commercial hypertext packages.
This portion of the Emergency Preparedness computer support suite makes use of an underlying inference engine, the hypertext presentation modules and the document retrieval capabilities. It will enable the author of a tutorial to present graphical, text, sound, and motion picture material to a student, to prompt the student with problem material, and to analyze and tabulate the results returned from the student. The system includes sophisticated functions for partitioning and inter-relating the knowledge modules, and for adaptive behaviour in response to students' mistakes. In this latter regard it is a major advance over most computer tutorial products, which adopt a simple do-or-die approach to mastery and present the same material repeatedly until the student provides the correct input. Natural language document database queries can be stored in the tutorial or issued by the student to retrieve relevant passages of supporting material.
This extremely flexible and powerful simulation environment, in use in DManA, permits researchers to model organizations and their policy sets as state transition networks attached to multiple rule-bases. Once a model has been built, the simulator "runs" the organization into the future, making use of a mixture of imported (real) person records and synthesized person records at the researchers' discretion. The information generated by the simulation activity can shed light on the impact of current and proposed policies on the future nature of the organization's population. Items of interest include age distributions by rank, training status by occupation and rank, relation of preferred to actual manning levels, operational experience of personnel in various positions, etc., etc. The attributes of persons can be defined by the researcher, and the environment has recently been extended to include general resources other than persons. Recent work has automated the statistical processing and graphing of the output data.
This project involved participation in the requirements analysis activity for an operational database maintenance product for Lockheed Canada Electronic Warfare Support Measures (ESM) equipment. Operational databases contain the various data and knowledge (e.g. of missile threats) required by modern military equipment to respond in a "smart" manner when deployed. My participation also included the complete prototyping of an object-oriented database environment. The prototype can be used to import existing databases, with powerful parsing capabilities to compensate for the erratic quality and consistency of EW database contents, to maintain the databases easily and flexibly, and to emit tables appropriate for particular pieces of EW electronic equipment in particular theatres or engagements. The prototype rivals, and in some particulars surpasses, existing EW database products costing two orders of magnitude more than the expected full-up development cost of this product.
Defined and implemented a sub-network of several workstations for software developers participating in the production of a new ESM product for Lockheed Canada. This involved the specification, procurement and installation of network software and the definition of the network logical topology, as well as the evaluation of various "network-ready" products for team development. Target embedded hardware was attached using IP so that developers could perform software loads, and even debug the embedded software at run-time from their workstations
Implemented several other Peer and Server-based networks.
I have lead teams of up to twelve developers in the implementation of such systems as: next-generation ESM processors (Ada software in a VME environment); automated document analysis and filing expert systems (specialized hardware attached to a DOS PC and mixed language modules for graphics processing, document recognition, and expert-system based classification and filing; expert systems for requirements capture and analysis; expert systems for threat evaluation and weapons assignment; IBM mainframe database access applications; business productivity software for OS/2; user-friendly graphical user interfaces for DOS, OS/2 and Windows; document processing and enhancement applications in the HP and VAX environments.
I have also done additional design work and some experimental implementation in the areas of natural language analysis and recognition (cf: message reading and filtering, document classification), neural network classifiers, and genetic algorithms for optimization.