| Expertise | |
| Methodologies | Object-Oriented Analysis, Design and Programming; Rich Internet Application Development; Graphical User Interfaces; Logical Database Design; AI Search Techniques; Knowledge Engineering; Rule-based Programming; Software Re-Engineering; Authoring of Proposals, Specifications and Documentation; Software Product Curriculum Development and Training. |
| Languages/Libraries | Google Web Toolkit (GWT), C#, .NET Framework, ASP.NET, Visual C++, MFC, C, Java (Applications/Applets/Servlets/RMI), XML, MSXML XML Parser, Xerces XML Parser, Xml4J, Visual Basic, LEADTOOLS, SQL, Pro*c Precompiler, Lisp, ART, CLIPS, OPS5, Assembly, PASCAL, FORTRAN |
| Tools | Eclipse IDE, VS.NET 2003, SQL Server 2000, MS Visual C++ (MSVC), Sun Workshop, Together Control Center (TCC), Rational Rose 98, ERWin, PowerDesigner, Rational ClearCase, Visual Source Safe, SQL Server, MS Access, MS Word, MS Project, InstallShield |
| Environments | Windows 2000, Windows NT, Solaris, Win95, Win 3.1, DOS, Symbolics, VAX/VMS |
| Projects | |
| Rich Internet Applications: January, 2008 - Present |
Development of rich Internet applications using Java and Google Web Toolkit. |
| Automated Loan Approval: February, 2006 - October, 2007 |
Client: A Major Mortgage Lending Company. Maintained and enhanced rule-based (ART) and procedural (C++ and C#) portions of an automated loan approval system used to approve thousands of loans per week. Worked closely with domain experts in implementing code for a changing set of policies and products. |
| Digital Music Distribution: June, 2000 - February, 2005 |
Client: A Major Recording Company. Leading member of team that designed and built a set of C++ classes that implement an API for packaging and unpacking the digitally-encoded contents of music CDs, including metadata represented as XML, to and from a proprietary distribution format developed and shared by the members of a consortium of music and consumer electronics companies. Used MSVC, the C++ standard library with STL, and the MSXML and Xerces XML parsers to implement portable code suitable for a variety of platforms. Wrote an automated test program for this API that writes and reads files having a variety of automatically-generated combinations of data elements and compares the data written with the data retrieved. Ported the finished API and test program from its original Windows NT (now Win2k) platform to Solaris using Sun Workshop and the CC 5.0 compiler. This API is currently in production use by the client, by some of the client's content clearinghouse partners, by other companies that are members of the consortium that participated for the API's development, and by other licensees of the API. Using the above API, Sun Workshop, and the Oracle Pro*C SQL-to-OCI precompiler, designed and coded a Solaris-based packaging application that reads album-related asset descriptions and assets from Oracle database tables and flat files and packages each album processed into a digital distribution file. This application was in production use until it was superceded by the Windows/.NET application described below. Using Visual C++ and the abovementioned API, designed and coded a set of COM objects targeted to Windows 2000 that can be used to easily extract metadata from the proprietary distribution format mentioned above, and to translate album tracks and metadata from that format into a well-known publicly available format implementing Digital Rights Management (DRM) for secure distribution to consumers over the Internet. These objects are currently in use by digital music content clearinghouses for purposes of unpacking and encoding the client's recordings for Web-based retail distribution. Fixed and enhanced a defective Java program for automating digital music file quality control that had been written by a prior consultant. This program was used temporarily for production purposes until it was replaced by a more comprehensive program, which is described below. Using Together Control Center (TCC) for both UML and IDE support, designed and coded a distributed Java-based system that uses Remote Method Invocation (RMI) to coordinate job execution on a set of 11 PCs that cooperate to prepare digital content for distribution in various formats. The system performs watermarking, encoding, decoding, watermark verification and comparison of decoded files to original files in a manner that respects job dependencies, balancing the workload across eight different PCs so that jobs can be completed in a timely manner. This system is currently being used for production purposes. Ported the Solaris-based album packaging application mentioned above to Windows/.NET to improve maintainability. Used IJW technology to compile the C++-based Packager and file packaging API in mixed (managed/native) mode. Created a set of data access base classes that wrap a typed DataSet using the classes in the System.Data.OracleClient namespace, and derived classes from these that communicate with the Packager's Oracle staging database . Replaced all Pro*C precompiler data access code with code that uses these new data access classes. Created a wizard-based installer. This system is currently being used for production purposes. |
| Online Program Guide: May, 2003 - October, 2003 |
Web application for displaying and editing online program guide information. Designed and built an application
using ASP.NET, C# and SQL Server 2000 that supports Web-based
creation, updating and viewing of a radio station program guide.
Application includes a secure login using forms-based authentication, plus
ability to create and edit shows, schedule shows for multiple weekly time
intervals over multiple date intervals, view program schedules for coming
and past weeks, view show information, display icons with shows denoting
types of program content, link to digital recordings of past shows and to
external Web sites for shows, group related shows on the schedule under a common heading,
etc. |
| Digital Music Distribution: April, 2002 - May, 2002 |
Client: Sony Music. Designed and built a Visual C++ program that translates an XML-based representation of a musical recording (album) along with its flat-file based assets, into a proprietary distribution format using an API that the company had licensed from that API's sponsors (see above). This translation is driven by a configuration file that describes the form of the XML and its relationship to the proprietary format, allowing significant flexibility in the handling of a variety of potentially unanticipated input formats and data mappings. |
| Web Application Functional Design: October, 1999 - May, 2000 |
Client: Event411.com. Worked with company's leading event planning expert to develop detailed functional specifications for three separate Web applications: an event space definition and reservation tool, a hotel reservation system, and an event registration system. Performed logical database design using ERWin for the latter two applications, which were turned over to client for implementation in Cold Fusion. |
| Rule Interpreter and Editor: February, 1998 - January, 2000 |
Client: A Major Financial Services Company. Was brought in to evaluate an attempt by another consulting firm to implement an interpreter for business rules to be used in automated loan evaluation. The resulting report confirmed the client's fears that this effort was not salvageable. Was retained by client to design and implement a new approach to this same task. Worked with client's loan processing experts to analyze requirements for interpreter. Developed throwaway interface prototype for requirements evaluation using Access Basic. Interpreter was to be part of larger system that included data input, workflow automation and business-to-business components. This larger system had not been fully designed, and hence the boundaries between the interpreter and the larger system were not entirely clear. After much discussion, it was decided that the gross features of the greater system would have to be specified and implemented prior to implementing a final version of the interpreter. Client ultimately requested continuation of work on the rule interpreter as a prototype, to be updated and integrated when rest of system was ready. With one other consultant, used PowerDesigner to create a data model for if..then (production) rules appropriate for loan analysis and used Rational Rose 98 to create a design representation for a program to interpret those rules. Had sole responsibility for successfully implementing the prototype interpreter using Visual C++. A multi-threaded approach was taken that allows multiple loan cases to be processed concurrently. Created XML Document Type Definitions (DTDs) for all inputs and outputs to interpreter, as XML ultimately will be used to hook up the interpreter to the greater system. Created sample loan input data in flat files using XMLNotepad and also gave prototype the ability to generate simulated loan data internally for testing purposes. Revised PowerDesigner database tables to account for changes made during development, and used PowerDesigner to create physical representations of the resulting tables in MS Access format. Coded prototype to initialize itself by reading rule descriptions from the database using ODBC. Created simple user interface that allows sample loan cases to be loaded from their XML-formatted files or else generated continuously using simulated data (in order to test concurrent processing of multiple loan applications). Interface also allows results of any evaluation to be exported to an XML-formatted file. Successfully tested prototype on both hand-created and automatically-generated loan data. Wrote Java applet using xml4j capable of browsing the XML-based loan evaluation output data generated by the rule interpreter, so that loan case results could be easily viewed. Wrote three-tiered system using Java on the client and a Java servlet as the middle tier (communicating via xml4j) to view and edit business rules in the database from a remote workstation using HTTP to connect the client to the middle tier. Client code could run either as an applet or as a Java application. |
| OCX Container GUI: July, 1997 - June, 1998 |
Client: Reuters America. Part of the team that delivered Reuters Plus, the successor to the Quotron financial information system. Shared responsibility for the Reuters Navigator, a container for a set of ActiveX controls such as Chart, Quote, News, etc. that present real-time financial information to users in brokerages around the world. Was personally responsible for an innovative Page Layout Wizard that automates the selection and placement of controls on Navigator pages. Once a set of controls has been selected by the user, the Wizard quickly searches a vast space of possible control placements for desirable configurations. It then allows the user to place the controls one at a time, but presents to the user only those candidate positions that are guaranteed to lead to at least one desirable final configuration in which all controls have been placed (and all available space has been filled). The Wizard is featured prominently in marketing descriptions of Reuters Plus, and a patent (number 6,380,954) has been granted to Reuters listing Goalstate's principal developer as the sole inventor. Was personally responsible for integrating the Internet Explorer WebBrowser control into the Reuters Navigator, allowing financial information from Reuters and other pages to be displayed and manipulated in the same manner as are the other Reuters controls. Implemented a method by which Reuters- and user-created HTML documents could incorporate special links that invoke container (Reuters Navigator) commands instead of causing the displayed URL to change. Click here for a sample Reuters Plus page showing the Web Browser working together with the Reuters News control. Adapted the position generator of the Layout Wizard's search algorithm for use in choosing a desirable, non-overlapping initial position for a control during manual placement. Implemented scrolling and proportional scaling of controls as their containing pages are scrolled and resized. Wrote multi-threaded code for the "cradle to grave" management of EXEs started by Reuters Navigator, so that they can be started, attached to pages, serialized to and deserialized from a Reuters Navigator document file, and terminated in a manner similar to that used for OCXes managed by the Navigator. Fixed problem with the Reuters Navigator's Automation interface. Isolated and fixed innumerable bugs and memory leaks in both Navigator and the various OCXes. Created documentation of parts of the Reuters Navigator for use by Reuters Product Support. |
| ActiveX Controls: April, 1996 - May, 1997 |
Client: Eidetic Systems Corp. Developed Eidesys SPLIT Suite '97, a nationally-advertised set of ActiveX controls for Visual Basic that integrates splitting and scrolling of display areas. Using VC++/MFC combined with low-level COM, programmed functionally identical 16- and 32-bit versions of the product based upon design created jointly with client. Developed methods for providing unprecedented design-mode interaction, allowing controls to be manipulated in design mode in the same manner as in run mode. Split Suite '97 was reviewed in the December, 1997 issue of VB Tech Journal together with four other splitters, and the reviewer's boxed summary read: "Split Suite from Eidesys is innovative and interesting. It has everything you could want in a splitter and a few things you probably never thought of." Near the end of the article, the reviewer states: "If you're creating a browser-type application and can get only one tool, then Split Suite from Eidesys is your best choice." |
| Graphical User Interface Programming: July, 1994 - December, 1996 |
Client: Dolphin Imaging Systems. Using VC++/MFC and the LEADTOOLS graphics library, developed much of the MS Windows user interface and I/O capabilities for Dolphin's internationally distributed line of orthodontic imaging systems, which are the most popular systems of their kind today. Worked jointly with Dolphin's management to refine UI concepts, then implemented the desired features. These included: image capture from video, TWAIN, digital camera files and the clipboard using LEADTOOLS and Video for Windows; image capture sequencing, post-processing and indexing; banded printing for a variety of printers; a custom button control integrating bitmaps and text used system-wide to provide a unified look; integration of video images with cephalometric tracings; display of cephalometric data, including graphical "Polygon" display preferred by Japanese orthodontists; patient selection dialog with image preview and selection; extraction of images to various file formats; dynamic use of thumbnails to improve efficiency; graphical overlays of data from different points in treatment, and many others. Added OLE Automation capabilities so that 16-bit Dolphin could interface to 32-bit orthodontic office management software by OPMS. |
| Other Projects |
Access Basic Bus (Transportation) Data Analysis Program (BDAP), Word Basic Form Letter Automation Client. |
| Employment | |
| 1990-1993 |
Software Consultant, Abacus Programming Corporation. Part of a team responsible for re-engineering an operational medical claims processing system that had been abandoned by its developers. Served as technical lead for the replacement of the system's home-grown hierarchical database with a Teradata relational database computer, while simultaneously porting the system from DOS to MS Windows. Extracted a design from the original database code and created missing documentation. Designed and oversaw the implementation of a C-based Windows program (the Teradata Interface Module) that translated requests sent via DDE from the Lisp-based user interface code into SQL for transmission to the Teradata via Win/CLI, returning retrieved data. Part of a team assigned to re-implement a Smalltalk-based decision analysis tool as an MS Windows application using Borland C++/ OWL. Implemented a toolbar-based UI for interactively constructing a Directed Acyclic Graph (DAG) representing a decision process. |
| 1985-1990 |
Senior Knowledge Engineer, Inference Corporation (since broken into two companies, Inference - later acquired by Egain.com - and BrightWare). Designed and programmed dozens of knowledge-based working prototypes and applications for Inference clients using Lisp, C, and Inference's rule-based programming language, ART. Clients included: Ford Motor Company, Lockheed, TRW, and General Electric. Domains included: Computer-Aided Process Planning, Brake Failure Diagnosis, Medical Claims Fraud Detection, Power Plant Monitoring, and Loan Approval (GE's Expert Credit Authorization System). Prepared and delivered presentations on knowledge engineering methodology and rule-based programming techniques. |
| 1982-1985 |
Member of Technical Staff, Rockwell International Space Division (since sold to Boeing, becoming Boeing's Space Systems Division). Projects in PASCAL, HAL/S, 1750A assembly, OPS5 and ART. |
| 1980-1981 |
Programmer, Leeds and Northrup Company (since sold to several companies, including Foxboro and Honeywell). Projects in PASCAL and DCL plus documentation. |
| Education |
B.S.C.S., California State University, Fullerton, 1984, with honors. |
| Patents |
METHOD AND SYSTEM FOR LAYOUT OF OBJECTS WITHIN A PERIMETER USING CONSTRAINED INTERACTIVE SEARCH (U.S. Patent No. 6,380,954). |
| Publications |
"BRAKES: A Diagnostic Expert System for Engineers," Proceedings of Expert Systems for Advanced Manufacturing Technology Conference, Dearborn, MI, 1987 (co-authored). |
Copyright 2009 Goalstate Software Consulting, Inc. All rights reserved.