|
Development
Projects
 |
ORACLE
Data Loader
Designed
and developed a suite of NT services with Visual Basic that load
text files into an ORACLE 8 database at the rate of 10,000
records per second. These services are highly
configurable, and report a variety of statistics and error
conditions for review by the application administrators. The
services are also self healing, so that a failure does not require
operator intervention for the 24X7 loading process to
continue.
|
 |
Expert
System
Developed
an expert system with Gensym G2 to monitor real-time weather and air
quality data to assist a refinery with detecting and preventing odor
incidents. This application included a digital map and a
database of every street and neighborhood within the map area that
allowed the refinery to pinpoint a complainant's location and verify
if it was possible for an odor to have been blown to that location
based on the stored weather data.
|
 |
Plantware
Data Access Layer
Developed
a Visual J++ COM+/MTS data access layer that accesses 3 ORACLE
databases concurrently. This object performs multiple queries
against various databases to get physical property data for a tank,
and then aggregates the results into a single custom ADO recordset,
which is returned to the client application. The query
performance was optimized through the use of prepared parameterized
queries and prepared insert and update statements that directly
access ORACLE bind variables.
|
 |
NT
Security Object
Created a
C++ ATL object that accesses the NT security API to obtain a user's
SID. The object detects if it is running under MTS/COM+, and
uses it's API to obtain the SID, or if it is not running under MTS,
it uses the normal NT API. The object then uses the SID to
report the user's name as well as all groups that the user belongs
to in both the user's domain as well as any other specified
domain. This object was used to create a stand alone utility
to display user group information for system administrators as well
as the basis for securing access to various Active Server Pages
(ASP) on a corporate intranet site.
|
 |
Real-Time
Process Variable Calculator
Designed
and developed a set of JavaScript modules that act together to
calculate real-time process data variables. These scripts
access an OLE for Process Control (OPC) server to read and write a
Distributed Control System's (DCS) variables. The scripts also
implement a sophisticated messaging system that writes errors into
the NT event log as well as log files.
|
 |
Equivalent
Distillation Capacity Data Loader
Created an
SQR program that retrieves data from a yield accounting database and
a real-time process data database, performs various calculations,
and updates a series of tables in the yield accounting
database.
|
 |
Real-Time
MTS Data Access Object
Created a
suite of objects that allow users to access real-time data via
Internet Explorer. Client side VBScript instantiates server side
objects within Microsoft Transaction Server (MTS) that use an in
house developed API to access real-time process data. The client
side scripts use the Advanced Data Connector (ADC) to instantiate
the server side object, which leads to interesting persistence
problems within MTS. These problems were overcome through the use of
the MTS Stored Property Manager (SPM) and a set of proxy objects
that manage the connection between the Internet Explorer clients and
the persistent objects within MTS.
|
 |
Message
Queue Based Data Loader
Created a
set of NT services with Visual Basic that load and read messages to
and from the Microsoft Message Queue (MSMQ) service. The loader
process reads data files and loads records into a queue. The reader
process reads the messages from the queue, parses the messages, and
loads the corresponding records into an ORACLE database.
|
 |
Crude
Oil Assay Database & Emissions Calculation
Created a
VBScript using ADO that obtains process data from an ORACLE
database, and calculates an emission value using a fairly complex
algorithm. The script automatically back fills data for the last 15
days during each run in case some historical data has been
corrected. Created an SQR report that uses the calculated values to
calculate and display a target unit throughput rate. This project
also involved creating an ORACLE database for crude oil assay data,
and a series of complex views that quickly accumulate the assay data
into a form that is usable by the SQR report program.
|
 |
Process
Data Reporting System
Created a
set of SQR function libraries and report template used to convert
approximately 1000 reports from a UNIX system to an NT based
system. Created a DLL that implements the SQR API to run a
report and create associated debug and error files. Also
created a set of MTS hosted server objects that use the DLL to
control the SQR process execution and marshal the file back to a
client object using DCOM.
|
 |
Data
Loader Execution
Created a
set of VBScripts that control a set of NT based SQR programs that
load data into an ORACLE database. These scripts implemented a
sophisticated messaging and error reporting sub-system. Also
created a script to fetch data from an FTP server and report on any
problems incurred.
|
 |
Loan
Loss Forecasting Model
Designed
and developed a regression based loan loss forecasting models based
on credit card portfolio delinquency cycles. Received the most
valuable player award for a 250+ person department for this and
other contributions.
|
 |
Process
Management
Created
several UNIX Bourne shell scripts that started, stopped and checked
various processes. These scripts were put on cron as well as
added to the rc.d startup and shutdown scripts to automate the
initiation and recovery of various UNIX processes.
|
 |
Strapping
Table Calculation Program
Developed
a C program that creates a linear interpolation strapping table for
a tank based on configurable tolerance levels. This program was used
to generate the strapping table files required by a 3rd party yield
accounting system for most of the tanks within a refinery.
|
|
|