CURRICULUM VITAE
of
Alan G. Carter
March 1999
Personal Information
Name: Alan Geoffrey Carter
Location: Ibiza
Ibiza
Spain
email: alan@melloworld.com
Date Of Birth: 11 July 1960
Place Of Birth: Nottingham, England
Nationality: British
Status: Single
Health: Good
Employment History
November 1988 to Present - Freelance Software Engineer
During this period, projects have included:
May 1998 - Date: Reciprocality Project
Reciprocality is a private project to better understand the nature of the stresses and challenges facing the software industry at the moment, particularly in respect of deep cultural issues in the model of the nature of work. The intention is to be able to assist organisations to create conditions where they can maximise their ability to attract, retain and get the best from able staff, while ensuring that younger staff are provided with the conceptual and technical mentoring necessary to develop into aware and effective creative engineers.
The project is evaluating 10 years teaching experience in a very broad social and cultural context, and appears to be generating interesting results. It would seem that the way that software engineering is perceived in society at large can tell us much about difficulties society will face as the economy becomes more clearly dominated by Information Age issues.
March 1998 - April 1998: United Kingdom Defence Evaluation Research Agency
Development of device drivers for a novel mouse. The client required drivers for the Windows 95 and SGI IRIX platforms, which presented different challenges. The hardware group had to be able to modify and build the device specific code at will during their own work, and on both platforms, signals from the novel mouse must be available as well as, not instead of, the integral system mouse.
The key issue in Windows 95 was layering. The core of the kernel mode VxD was written in 386 assembler to easily access other kernel components. As signals from the mouse are noisy, it was a requirement to expose a simple C module where hardware engineers could experiment with damping algorithms and easily relink. The solution worked from the VCOMM logical COM device to the VMOUSE logical system mouse, with Windows 95 "correct" installation procedures and configuration control via the Registry. A Win32 application was supplied to control the driver via IOCTLs. Build was by simple command line batch file decoupled from the DDK and GUI front ends to the Developer Studio.
The IRIX challenge was that SGI change the internals definition between platforms and releases of IRIX, so any kernel mode driver would have limited applicability. The solution was a user mode driver daemon that opens the integral and novel mouse devices, parses both streams and serialises whole packets, after translation into a common protocol, onto the master side of a pseudo-terminal. The daemon links the slave side of the pseudo-terminal used to a well-known-name in /dev. Mouse using applications (e.g. the X Window System) may then be configured to use the well-known-name and common protocol. The daemon is portable to most UNIX ports, not just all SGI IRIX variants.
Contact with the hardware group was entirely by Internet, using a standard serial mouse as a test device during early development. Thus the driver was written without ever seeing the hardware, which enhanced the rigour of the driver's abstraction enabling the hardware group to change to a completely different design half way through the project.
February 1998: Utell International Ltd.
On behalf of a long-term client, I simplified and documented the structure of a multi-currency travel industry commissions payment system whose processing and operational functions had moved between London and Omaha several times during its evolution. I performed management of upgrades and cutovers in the two business centres and a strategic business partner's systems in Phoenix entirely by Internet, using phone liason to control a mission plan worked out over several months.
November 1997 - January 1998: Serco CiT Ltd.
Design and implementation of Kilgetty NT, a Windows NT total media encryption package to be approved for Government use by GCHQ CESG. The solution involved an NT filter and class driver capturing all operations initially to floppy and hard disks. Some features are:
A particular challenge on this project was the very short timescale.
October 1996 - August 1997: Principal Consultant, DERA Open Software Systems Group
As a risk reduction exercise, I explored issues of asset tracking, configuration management, and reliability monitoring of all radio communications equipment to be issued to UK Forces in peace and war conditions. I researched field situations, supply and maintenance lines, legacy systems and ergonomic issues, and developed a methodology for identifying potential state transitions in the life cycles of equipment (which generate logistical data), and associating these with existing legacy systems and operating procedures, together with users of the generated data. The result was a cross-command practical description of the requirements of logistics automation required to control equipment. I then proceeded to identify natural systems boundaries where system segments could be implemented either as new procurements or as enhancements to existing systems. To maximise the customer's understanding of the existing situation, the capabilities, look and feel of existing systems were captured on standalone Windows 95 systems, with functional models built in HTML 3, using Perl 5 CGI scripts, with a command line interface to a Visual C++ executable using ODBC to query Microsoft Access.
November 1995 - September 1996: Principal Scientist, DERA Software Engineering Centre
As one of a small group of Technical Consultants I provided the technical lead on a number of projects:
Productisation. A research project had proved that analysis of a particular type of sensor data was possible on a high-end workstation, but had completed their task leaving 150 KLOC of Solaris C++ X Window System/Motif code (constructed with IST's X Designer). DRA wished to convert this code into a supportable product that could be exploited commercially. I guided a 4 person team that was charged with reverse engineering, documenting and defining test cases for this code, and converting to specified coding standards where practical. The solution involved placing the source under SCCS with simple "shopping-list" configuration management scripts, writing scripts to modify the source so it would parse in the Rational ROSE reverse engineering tool, producing maps, pruning the source (eventually to 30% of it initial size), setting up paired workstations as test rigs and single-stepping most of the source to understand function. Test classes were then defined and added to the nightly build for regression testing, and the engineers' notes were converted into detailed in-line documentation. Logical bugs were identified and fixed. User documentation and black-box test cases were written.
Acoustic Modelling. Physical theories of sonar propagation can broadly be divided into numerical methods (essentially ray-tracing), algebraic methods and empirical lookup. Researchers required a framework supporting GUI interaction allowing them to freely mix theory types, including identifying domains of applicability and selecting the appropriate theory (for example, different theories apply in shallow and deep water). Remarkably, the solution proved to be a very sparse set of mutually referential parameterized classes (templates) that represented the gaps between objects as well as the objects themselves. These provided a structure that visitor classes could hang their own data off, and interpret as necessary. The representational and computational core was implemented in portable C++, with a command line interface to driver programs that were provided in Motif and MFC.
Decision Support Proposal. A major system providing decision support in vehicle procurement, including integrating data from existing modelling capabilities was proposed. My team researched the capabilities of the existing systems, and suggested mechanisms for associating and presenting data to demonstrate the feasibility of the proposal.
Intranet Design. To assist with automated administration of the SEC and knowledge base provision to engineers, I led the design of a WWW Intranet which supported user sessions on top of stateless HTTP by editing output documents on the fly to add cookies to all URLs.
RAD Development. A customer wanted to implement some concepts in Computer Supported Co-Operative Working (CSCW) very urgently. My team developed a client-server tool enabling graphical manipulation of visual objects with the customer's required properties, using Visual C++, MFC, TCP/IP comms and a commercially available graphics DLL, within the client's 3 week rush deadline.
C++ Training Course and Coding Guide Production. I developed a training course in C++ in collaboration with a commercial training organisation, co-ordinate with a style guide for use within DRA.
October 1995: D. E. Shaw Securities
The client is a major Japanese bond market maker in the City. He had purchased data feeds from several vendors worldwide, which needed to be integrated into a Sybase database nightly for data mining activities. The problem was to upload the data, parse the data feeds, validate them and populate the database. Input data quality was low. Parsing and validation were accomplished by writing a parse engine in C that could understand a declarative description of the vendors' feeds. These were provided by optically scanning the published manuals and converting them with a text editor. Glue code was written in awk and Bourne shell, with Kermit comms. The application ran lights-out under SunOs, and used email to the system administrator to report errors.
March 1994 - June 1995: BT London Software Engineering Centre
The Operator Services Directorate Workstation Project provided a front end to 4,500 Operator Services Personnel, handling Operator Assistance ("The Operator"), Directory Assistance, 999, and International Services. The front end includes:
My role in this project was in three main areas:
Operating system selection. The number of sources of external I/O and mission critical nature of the national 999 service meant that the corporate Windows for Workgroups workstation strategy was technically not indicated. Having identified the problem, it was necessary to prepare and present the technical arguments in the face of very strong commercial pressures and popular misconceptions of the characteristics of the MS-DOS Windows extension. This issue escalated to BT Design Council, and a variance from usual policy was successfully obtained.
Networking strategy design. Each Operator Services Centre contains between 60 and 100 seats, and considerable data flows between workstations and local servers are required. It is important that failure of server, network or individual workstations do not prevent the Centre from working. The stateless, opportunistic networking strategy developed used per operator, per seat and per site data sets, with local caching, and server driven lazy replication to prevent bandwidth contention after extended failures. Avoidance of "normal" and "failure" modes meant that no state transitions had to be managed while under stress.
Windows NT device driver design. With Windows NT as the selected platform, and specialist hardware to integrate that could reliably initiate conversations with callers without the caller's awareness of the automation, record callers for rerouting to emergency services and condition sound to (for instance) detect waveforms typical of rape alarms and whistles and remove them, a significant device driver effort was needed. The driver developed conformed to the microkernel and manager objects, multi-processor, per thread asynchronous I/O model of Windows NT. The task was complicated by the paucity of low-level NT documentation at the time.
Development was carried out on Windows NT using Visual C++, NT SDK and NT DDK, with application modelling in Booch 94 notation using Rational ROSE CASE tool.
November 1993 - February 1994: Centre-file
Centre-file was a subsidiary of NatWest Bank. I provided an initial OO model of the business and architectural requirements of a proposed new credit card transaction authorisation system. As the system would back-end all the credit card transactions from NatWest's retailer customers, reliability and performance were obviously essential, but the design had to fulfill more challenging requirements as well. Usually one distributes processing either to achieve security, or efficiency. This leads to computational overcapacity in the former case, fragility and the danger of data loss in the latter. The customer wished to do both at once, preferably by isolating the distribution in the database layer so that application code could remain simple.
Working with a sophisticated object framework providing meta-data to enable the flattening, storage and transmission of object streams being providied by other Centre-file engineers, I designed a Traffic Manager layer with functionality conceptually similar to a Transaction Monitor, but in a distributed context. An application could deem certain events as "fundamental" in that they represented reports of real-world phenomena crossing the system boundary. The application could then "checkpoint" an event to announce its having occured to Traffic Manager, "confirm" that Traffic Manager had recognised it, and "validate" that the arriving event made sense in its current state of knowledge.
Once checkpointed, the application could engage in as many non-atomic actions as it needed to to process the event, and "confirm" that the necessary WAN replication had occured before approving the purchase back to the EPOS terminal. The Traffic Manager was responsible for ensuring that the fundamental event had arrived at least one remote site, but did not need to complete remote processing before responding successfully to a confirm. Fundamental events were then passed between remote sites until all knew that all had seen them (this is an interesting problem in its own right).
Traffic Manager handled the identification and routing between remote, redundant sites, so the applications did not need to worry about doing any replication. However, by allowing the application to flag the essential moments, the scheme could be extended to passing transactions across to other banks for processing. This was very important, as the EPOS terminal is provided by the retailer's bank, not the customer's. Coping with inter-networking to other organisations, often with subtley different transaction models means that identifying the essence of one's own transactions is essential.
Messages could arrive from any telecommunications point because of routing choices within the retailer-facing network, and often needed to be serialised. For example, a given instance might receive word of a cancellation before the original transaction! The validate method enabled applications to specify their own, arbitrary way of finding out if a given fundamental event made sense to them yet, so some transactions bore serial numbers, while others needed logic to deduce the sequence. This resolver approach has since been seen in Lotus Notes and other popular applications that cope with off-line working as network partition.
By passing around fundamental events only the design deferred detailed processing, allowing a remote system to queue an event that didn't yet make sense, and still allow a confirm. It ensured atomicity at a level selected by the application, by simply ensuring that each site regenerated all the consequences of something atomic. Machine reactivations simply loaded the new player with as much pending "gossip" as it could process until it was up to date. Actual network partitions could be handled provided external operators ensured that only one side carried on working during partition.
September 1993 - November 1993: Utell International
Production of a multi-currency commissions management system for Hilton International, including interfacing to Utell's existing financial systems, liaising with Hilton's systems and commercial marketing teams, coding and testing. Because of my extensive prior experience of this client's business, I handled much of the commercial arrangements (including artwork) as well as technical implementation.
October 1991 - September 1993: Bell Northern Research, Maidenhead
Madley B is the biggest international gateway switch in the world, developed for BT, and is capable of switching 560,000 calls per hour, at an average call revenue of UKP 10 per call. Billing together with network and traffic management functions are handled by a network of HP workstations running HP-UX, with interfaces to external network management centres running on Sun workstations under SunOs. The subsystem IPC backbone is Ethernet with TCP/IP. Communication with external network elements is via ISO communication stacks. NFS networked file systems are shared between workstations.
My role on this project was overall software architecture design, justification and implementation, with a particular view to robustness and recovery. This is especially important as international treaties require either a complete 24-hour set of billing data to be presented to other countries' PTTs, or nothing at all. Hence failures of either hardware or software involving data loss would be very expensive. Due to the international nature of the customer base, there are no natural downtime periods for this system. Hence the design must allow all maintenance activities to take place on a fully active system, or allow reliable buffering of data while predictable activities take place. The system must also provide detailed analyses of traffic levels on links such as communication satellites and undersea cables so that network configuration may be constantly monitored and controlled. Any periods of downtime must therefore be of short duration, and normal system response must be near realtime.
The project was written in C with CASE support from Software Through Pictures (StP), CodeCenter (Saber) development environment and code coverage assurance in blackbox testing with GCT. All documentation was produced using FrameMaker.
August 1990 to September 1991: British Telecom Research Laboratories
WMS was a major project ultimately intended to co-ordinate all maintenance activities on BT's national network. I was responsible for:
All interprocess communications using message queues and semaphores, and all inter-computer communication using NFS Remote Procedure Calls. The solution involved describing data types in special headers, with generated overloaded functions and XDR calls ensuring reliable communication and message handling, without any coding required by application programmers.
All archiving and retrieval of non-active data using SQL scripts, and embedded SQL using the Oracle Call Interface (OCI). OCI based code was subsequently rewritten using ProC due to a change in the client's corporate standards. Due to the vast amount of data to be processed by the live system, maintaining application level consistency between on-line and off-line data, with swift access to and on-line indexing of off-line data, required application level extensions to the concept of a relation supported by Oracle.
A system wide fault recovery strategy. As the system's users will revert to backup systems within 30 minutes of failure, the recovery requirements were unusual. As many problems as possible had to be solved within 30 minutes, followed by a 'warm' restart, with all other recovery able to take a full night and involve a complete system reload if need be.
The hardware and software environment was NFS networked Sun SPARCstations running SunOs and Sequent Symmetrys running Dynix and Dynix/ptx, with Yourdon methodology supported by IDE's StP CASE tool, AT+T V 2.0 C++ and Oracle Version 6.
November 1988 - July 1990: Various Clients
During this period I supported several clients' projects part-time.
Utell International
Utell is an international hotel reservations agency with offices in 35 countries worldwide, and dealing in 89 currencies. I designed a multi-currency cheque production system for automatically raising cheques to creditors, printing date and value information in the client's national language, and reconciling in client or base currencies. The system was built to link to either a UNIX or DOS system call level, with multi-user protection active under UNIX.
I ported a compute-intensive financial MIS from Motorola 8400 and Perkin Elmer XF610 to Sequent Symmetry S81.
I added a journaling sub-system to the client's MIS database servers, and a forward restore that automatically maintains the consistency of partially journalised logical transactions.
Crosfield Electronics
The client was the world's leading producer of high quality scanner equipment for the printing industry. Their Remote Diagnostics Project allowed engineers to dial into scanner systems on client sites, download and run diagnostic software, obtain vital signs data from an on-board 6809 based micro, control the system remotely and communicate with the local operator.
As senior project engineer, I was responsible for all aspects of the base station software, written in C and running under XENIX and UNIX, and provided an MS-DOS version of much of the system for use by field engineers working directly with scanners.
ICL Training Division
As a lecturer, I developed and taught courses on many aspects of the UNIX/C environment.
Gloucestershire College of Arts and Technology
As a lecturer in C programming, I provided courses to groups of between six and twelve students from a wide range of previous industrial and academic experience. The course objective was to provide a sound understanding of the facilities and methods available in C, enabling students to produce good C code in their
own commercial environments.
Department of Trade and Industry, and GCHQ
These two clients required specific lectures connected with projects they were engaged in.
Howells Associates
The client required a multi-user database facility with SQL-like commands including SELECT, WHERE, ORDERBY, FETCH, BETWEEN, LOCK and VIEW, available directly from C, with the data interface being C structures. Informix C-ISAM libraries were available for storing disk data. I also set up a configuration management system for the overall project using make and SCCS.
October 1987 - October 1988: Senior Analyst, Utell International
As senior analyst, financial systems, I reported to the Information Systems Director and was responsible for the development, maintenance and integrity of four major business systems dealing with financial MIS, sales ledger, and two financial services to clients. The Financial Systems team reporting to me consisted of one software engineer, two application programmers, and a proportion of the Operations Department's workload.
October 1987 - September 1987: Financial Programmer, Utell International
I was originally recruited by Utell to work on their new Nominal Accounts system which had not yet been implemented. Over my first year with the company, it saw a rate of growth which exhausted the capacity of most of the systems in-house at that time, including financial systems. My role therefore developed into a general responsibility to maintain all existing systems in addition to bringing the new Nominal Accounts MIS on-stream.
My prior experience at device driver and assembler level was of advantage in a number of problems that emerged. Problems with buggy Ethernet boards on a Perkin Elmer XF610 required the installation of our own controller code. Without the UNIX source, this had to be installed by finding and patching the appropriate kernel vectors in /unix .
August 1985 - September 1986: Freelance Programmer
Although my principal activities until 1985 had been in processor-specific, assembler-orientated areas, I felt I needed a bridge to a wider range of operating system environments. I therefore undertook a series of contracts for a number of small typesetting oriented companies in Gloucestershire, mainly gaining greater experience of the UNIX operating system while porting application between Assembler and C under DOS and C under UNIX.
September 1983 - July 1985: Senior Programmer, Firstred Ltd.
Firstred was a subsidiary of Cumana, a micro hardware manufacturer, and was producing software for the educational market. With a team of two assembler programmers and part time assistance from a Deputy Head teacher of a comprehensive school, we produced a treatment of a full timetabling problem of a 2000 pupil, 100 teacher, 7 form comprehensive school that could be run on a standard BBC micro as issued to schools by the DTI.
March 1981 - August 1983: Programmer, Tandy Corporation
Following an early personal interest, I joined Tandy as a support and development programmer on the 8-bit TRS-80 range of micro- computers. I was responsible for providing customers with telephone support, producing software fixes, and writing software, particularly aimed at accounting, insurance and estate agency markets where the US sourced product was not suitable. To obtain efficiency all work was done in assembler using my own development subroutine libraries.
June 1979 - February 1981: Production Planner, Indalex Ltd.
Indalex is a subsidiary of RTZ specialising in aluminium extrusion, mainly for double glazing. My role was to plan work loadings through various processes such as presses, anodising, machining and delivery to meet customer deadlines. Due to my experience of programming, gained in my own time I was seconded to a team that was transfering the control of workflow from manual systems to an ICL ME29.
Disclaimer - Copyright - Contact
Online: buildfreedom.org - terrorcrat.com - mind-trek.com