RANGE OF SERVICES
New Software Systems: We work closely with your managers and users to define, design, and program new software systems. We bring experience with a wide variety of projects and platforms to your project.


Program Enhancements and System Repair: We make corrections and improvements to existing systems, both by direct modification of existing code, and by creating add-on modules to work with the target system.


Data Rescue: We build and apply automatic tools to track down the sources of data corruption. We restore data integrity with minimal downtime.
Systems Analysis: We analyze work processes - from recordkeeping and information services to medical experimentation - and identify ways of saving costs and improving output by computer automation and, when appropriate, standardizing procedures.
Algorithm Design: We apply mathematical techniques to find simpler, faster, or more optimal solutions to the "core" problems that limit system efficiency or correctness.
Data Conversion: We design and program automatic tools to speed the process of converting data from one system to another, or from manual to computerized operation.
Policy Studies and Modeling: We draw on a variety of formal methods from statistics, decision analysis, and probabilistic modeling, as well as a background in the real world of political and psychological constraints to policy, to provide systems support to policymakers.
Project Management: We will coordinate the activities of our own personnel, other vendors, and in-house staff assigned to a technical project to achieve rigorous project deadline and correctness requirements.
Although the scope of consulting services will depend somewhat on the type of project and the complexity of the systems involved, we can "scale" a project to match your individual requirements. Approaches and solutions can be tailored to budget and time constraints.

We will work with you in the proposal stage of a consulting project to adapt its scope to fit your specific needs.


  1. NEW SYSTEMS DEVELOPMENT
  2. Problem: A government agency wanted to develop integrated automation of their regulatory operations. Required functionality included database management, statistical analysis, legal report generation, case management & production control, and numerous ancillary functions. This was an extremely high-visibility project. The political forces bearing on the agency were polarized, intense, and utterly unforgiving of errors and cost or time overruns.

    Solution: Solution: Many major systems were designed in close consultation with the agency staff and built to their specifications. System user interfaces were designed to vary according to the needs and skills of a diversity of users, from professionals making occasional inquiries to full-time data-entry operators. The project was completed on-budget and on-time, and the systems were the mainstay of the agency's operations for almost 10 years.

    Problem: Project: A professional services firm needed a system to manage project budgets for numerous projects led by in-house directors and outside contractors. The system had to work with an existing accounting package which provided no data-export capabilities, and add a unique probabilistic "expected value" accrual system, recognizing changes in reserves for prior quarters and prior years as project "chance of closing" estimates changed.

    Solution: Solution: To minimize both the costs and risks of duplication, a method was devised to extract both data and budget category specifications from the existing accounting package automatically. Then stand-alone analysis programs were designed and developed to provide the necessary budget/actual breakdowns to allow management to identify problems and patterns. The system has been the backbone of project-based financial management for 8 years, and numerous ancillary projects have been pursued.


  3. DATA RESCUE
  4. Problem: A major public authority's accounting system was suffering from program errors. Crashes were frequent, leading to progressive data corruption. The system consisted of over a thousand programs, and there was no access to the designers or to previous programmers. Daily operations were critical and no significant downtime could be scheduled.

    Solution: An automatic approach was taken. First a task force of diagnostic and data-repair programs were written to stabilize the situation. These were run daily to head off impending crashes and prevent further data loss. Then an "archaeological" group of programs was built to analyze the system as a whole, and track down the design contradictions and coding errors that were the ultimate cause of the problems. With these results obtained, a strategy of automatic and "hand crafted" changes rationalized the system without downtime.


  5. SYSTEM CONVERSION
  6. Problem: A private software development firm had purchased a suite of about 300 programs which they found would not run on their computer. In-house programmers performing the program-by-program conversion were proving to be very expensive.

    Solution: A finite-state automaton was written to analyze the lexical structure of the programs and rewrite the incompatible portions. These programs are now a mainstay of the firm's cash flow.

    Problem: A marketing firm had purchased a new computer system and needed to convert their old, informally kept computer data to the new, rigorously defined format. A previous conversion had failed; the converted data never became "clean" enough.

    Solution: By working closely with the personnel who had operated the previous system, programs were developed which could look at the records as a whole and had enough "judgement" to be able to standardize 90% of the questionable data. The remaining 10% was parsed into two groups. The preponderance of these cases were presented to an operator during the conversion run for immediate approval or correction, and the small group of remaining cases required detailed human investigation. The conversion was successful and went into immediate operation.


  7. PROJECT MANAGEMENT
  8. Problem: A city government publicly announced a deadline for the recalculation of the apartment rents in the city, per a statutory "philosophy". The algorithm that would do this, much of the data that it would depend upon, and the programs that would perform the recalculation and support the management of the process had yet to be developed. The political crossfire was intense: errors or delays would have led to lawsuits and public protests.

    Solution: Data collection was accomplished by coordinating a team that varied from five to twenty staff members. When the sample size permitted, programs were written to perform statistical analyses and data graphing. Working with administrators and policy makers, an algorithm was formulated which would fairly implement the politically mandated philosophy, and be practical to manage. In a public hearing, public testimony in defense of the algorithm was offered, and questions were fielded. Simultaneously, data collection and automatic checking/conversion continued, and the calculation and mailing systems were developed and tested. Sophisticated and painstaking methods ensured that the systems would run correctly and handle all special cases on their first and only "live" data run. There was zero tolerance for error. The adjustment was completed on time, with no program errors and minimal data corrections. Follow-on contracts to perform the adjustment in succeeding years were written and executed.


  9. MANAGEMENT CONSULTING
  10. Problem: A major university hospital department of surgery wanted to formulate a 5 year computer systems development plan.

    Solution: After close consultation with the Chairman, Director for Administration, various Surgical Heads and support staff, and a survey of existing systems, a model of the department's information-handling needs was formulated, and used to project systems requirements. A detailed set of reports outlined staffing, hardware and software requirements, and presented a staged plan for systems development. These reports were used as the vehicle for a series of meetings building the institutional buy-in to make the plan a reality. The plan was a success, and a follow-on contract to formulate a plan for Anesthesiology followed.


  11. SYSTEMS RATIONALIZATION
  12. Problem: A law firm had procured an integrated, customized automation of their document production operations. Several years into the project, most of the paid-for capabilities were unused, and the relationship with the vendor had broken down.

    Solution: After interviews with the firm's managing partner, the lawyers, office manager and secretarial staff, and an analysis of the system code, a multi-phase system rationalization program was devised. A coordinated series of program fixes, new systems, training sessions and user manuals proceeded in three phases: first, to put out the fires and get documents flowing again; second, to bring into operation the system features that would save the most time and money; and third, to standardize and enhance the systems and procedures to make them more manageable and resistant to error.


  13. SCIENTIFIC
  14. Problem: A research institute affiliated with a major hospital was studying the reactions of head-injured subjects to visual and aural stimuli, and needed to measure their responses in milliseconds (1/1000ths of seconds). Custom-built software for the presentation of speech and animated graphics, timing, and statistical calculation and charting was required, and had to run on the Macintosh computer family.

    Solution: To achieve the accuracy and graphical "glossiness" required, the programs had to concern themselves on a millisecond by millisecond basis with the exact state of the hardware platform in quite unusual ways, including redundant timing mechanisms, dynamic adaptation to the exact position of the scanning electron beam of the screen, etc. The required software was designed and developed, and the study is progressing successfully.

PROFESSIONAL EXPERIENCE


    1979 - present

    Independent Consultant: Total responsibility for all phases of the systems development life cycle - from requirements definition and contract negotiation through architectural design, programming, testing and installation. Dozens of systems in place; many other computer-related projects completed. Typically operated as primary contractor, bearing responsibility for project effort estimates, delivery deadlines, and performance/ease-of-use of the delivered systems. Repeated experience with projects in which both the timeliness and correctness of the systems delivered were subject to intense public scrutiny.

    Clients have included various departments of municipal government, other governmental agencies, large and small software development companies, research institutes, hospitals, law offices, and other private firms. Projects have ranged from new systems design and programming to statistical policy analysis, staff development and training, data rescue and systems conversion.

    1976-1978

    Chief Programmer: Programmer and Consultant at Management Strategies, Inc. Built application development tools, DBMS, MIS applications. Led project teams of programmers. Trained in SofTech's SADT. Chief client contact roles.

    GENERAL

    Programmer since 1967 (Age 13). Work in Java, ObjectPal, HTML, Perl-CGI, Active Server Pages, C, Pascal, Visual Basic, MACRO-11, LEX, FORTRAN, B2V2, LISP, COBOL, PAL-8, FORGE, PPL, HyperTalk, etc. in Wintel, DEC, DG, IBM, Unix, Macintosh, and other environments.

    OTHER PROFESSIONAL ACTIVITIES

    Patent #4,580,006, "Method and Apparatus for providing two dimensional positioning data signals"; a hand-controlled input device.

    Long-standing interest and involvement in artificial intelligence research and related philosophy problems, such as the nature of similarity.

    Frequent participant in public policy seminars at the Kennedy School Institute of Politics.

    EDUCATION

    Harvard University, B.A. 1975.

    Honors Graduate. Broad studies in Philosophy, Psychology, Math and Computer Science.

How to Control Computer System Costs