Al Sherman
Email: al@proglabspm.com
Résumé (doc version)
I have over 29 years of
experience in the field of data processing, with 26 years as a consultant.
I have worked with a wide variety of hardware and software, and with many
different types of applications (see details below). I have managed large
projects for several Fortune 500 companies, and have also developed many small
to mid-sized systems. I have been responsible for the entire software
development cycle on numerous projects. I have extensive experience as
a lead Systems Architect, lead Data Architect (Data Modeling) and Applications
Programmer. I've provided support and enhancements to very large systems
that were originally written by teams of other programmers. I excel at working
with other's code. I have a very strong background in manufacturing
applications (production scheduling, inventory control, requirements
planning, product mix optimization, etc.), mathematical modeling, algorithms,
statistics, financial modeling systems, and formal software
testing.
I work very well with people, and have
extensive experience in interfacing with all levels of management. I'm an
incredibly quick study and a strong team player. I have excellent verbal and
written communication skills. I'm a good listener, and an excellent
problem-solver. I'm conscientious and focused.
I'm energetic, positive, creative,
tenacious and self-driven.
For the past 11 years I have
been working with Client/Server and 3-tier systems employing GUI and
Web-based front-ends and RDBMS back-ends. I am extremely strong
in PowerBuilder, MS SQL Server and Sybase Transact SQL, with extensive
experience in system and data design and in writing and
optimizing Stored Procedures, Triggers, DDL (DBA functions) and DML. I can
architect and implement 3-tier systems using a variety of different languages,
application servers and databases. E.g. "OAS, Perl and Oracle", or "JRun, Java
and Sybase", etc.
I can work with either heavyweight
methodologies (e.g. UML) or Agile methodologies. I know how to combine the best
of a variety of approaches, choosing the right tool(s) for each task or
sub-task.
The remainder of this section presents
summary-level information about my experience and education. The following
sections present a list of in-house hardware and software tools and detailed
work experience information, in reverse chronological order.
Personal passion: functional strength
training. See www.dragondoor.com and get the book Power
to the People – it will change your life! See also www.ironmind.com.
References provided upon request.
Hardware experience:
- IBM PCs and compatibles, 20 years
- UNIVAC 90/30 and 90/60-80, 9 years
- HP 3000, both Classic (16 bit, MPE) and PA-RISC, 4 years
Languages and other development tools:
Languages used most recently are listed first. I've been
using Object-Oriented (OO) techniques and a variety of OO tools for several
years.
- MS SQL Server 7.0 and MS Transact-SQL (3 years). MS Transact-SQL
"begans-as" and is still very much like Sybase Transact-SQL, so
the years of Sybase SQL experience and MS SQL are really pretty much a
continuous use of the same language. Altogether, I have over 10 years
of combined experience using MS SQL Server and Sybase Transact-SQL. Significant experience with DTS.
- Perl (3
years). UDP messaging (sockets, etc.), database access via ODBC and
DBI, CGI, Oracle Perl Cartridge, …
- WinIDAMS, a
statistical package. Worked with
this package for a few months while developing Forecasting equations for The
Fuel Web.
- Modeling Tools. I have experience with Visio, Sybase
PowerDesigner and Enterprise Architect. These tools provide support for UML and
other types of Data/System Modeling. I've typically used these tools for Data Modeling, Sequence
Diagrams and Flowcharts.
- Sybase Transact-SQL
(8 years), Sybase 4.x through Sybase System 11
- Clarion (3
years), including Clarion for DOS, Clarion for Windows and Clarion/ASP. The latter 2 are “emerging skills”.
- Java. J2EE
technologies - Servlets, JDBC, JSP (including TagLibs) (2 years).
Only a very rudimentary exposure to EJB.
- JRun Java Application
Server (6 months). Installation, configuration, basic usage.
- Oracle 8i Enterprise Edition (OAS, OEM, PL/SQL, SQL*Plus) (14 months)
- XML. Basic
familiarity.
- Samba. Basic
configuration and usage.
- Apache. Basic
configuration and usage.
- PowerBuilder
3.0 through 6.5 (7 years), including extensive work with PowerClass, an OO
Framework
- Dreamweaver, Homesite, HTML (2 years). Basic familiarity with JavaScript.
- Data Warehousing.
Basic knowledge of fundamentals – star schema, etc.
- Pascal (7 years), FORTRAN (6 years), Paradox/PAL (2 years),
SPL (2 years)
- SAS, BMPD (statistical packages)
- I have a basic familiarity with C, C++, and Smalltalk
Tools: I've assembled a great "tool set" to
facilitate high-productivity development. See Hardware and Software Tools below.
Operating systems:
- Microsoft Windows 2000 (both Professional and Server),
Microsoft Windows NT (3.51 thru 4.0), Microsoft Windows 95, Microsoft
Windows 3.x, MS-DOS, UNIX (Redhat Linux 6.2 and Solaris 8), OS/2, MPE,
MPE/XL, VAX DCL
Networks:
- MS LAN Manager, MS Windows for Workgroups
and WinNT networks, LANtastic, DecNet, Novell, Samba
Education:
- M.A. in Operations Research, Yale University,
1973.
- B.A. in Mathematics, Cum Laude, CSU
Stanislaus, 1971. Minor in Business Administration.
Click here to skip over the Hardware
and Software Tools, and go directly to my detailed Work Experience.
Hardware and Software Tools
I typically go on-site during the
initial phases of a project and "as-needed" thereafter. I perform
the majority of my work via telecommuting - communicating with my Clients
via phone, fax, and email. I connect to my Client sites via either PcAnywhere,
dialup access, a Virtual Private Network (over the Internet), Virtual Network Computing
(VNC), NetMeeting, etc. My hardware
and software tools are tailored to provide a premier software development and
telecommuting environment. I've been providing remote Client support since
1988.
Please let me know if you'd like to see more information on my hardware
and software tools.
A partial list of my current hardware consists of:
- Several high-end networked
PCs with plenty of processing power, memory, storage capacity, etc.
- Tape Backup hardware and
software. I perform daily incremental backups and periodic full backups of
all my systems.
- High-speed Internet
connection with firewall.
- All of my PCs are set up to
multi-boot Linux, Solaris and Windows 2000.
- Top-of-the-line
surge-suppression, power-conditioning and Uninterruptable Power Supply
(UPS) equipment.
- A generator to insure that I
can continue to work even in the event of a power-outage.
- Many other hardware tools -
100Mbps Network, HP LaserJet printer, Canon Photo printer, CD-Rewriter, …
A partial list of my current software tools consists of:
- Extensive auto-expanding
parameter-driven code templates for SQL, Perl, JSP, Servlets, HTML,
Javascript and JDBC. See the
Multi-Edit item below for more information.
- MS SQL Server 2000
- Numerous auto-expanding
parameter-driven SQL code templates, including many that I have
"custom built". Astounding productivity-enhancers.
- Hugh libraries of working code examples,
including many generalized utilities.
- Perl tools:
- Numerous auto-expanding
parameter-driven Perl code templates, including many that I have
"custom built". Astounding productivity-enhancers.
- The ActiveState Perl Development Kit and
Debugger
- The Oracle Application Server (OAS) Perl
Cartridge and the Perl interpreter which is distributed with OAS.
- Internal web site links to extensive online
resources
- Hugh libraries of working code, including
many generalized utilities.
- Multi-Edit 8.0, a
really wonderful programmer's editor. Supports User-definable
auto-expanding parameter-driven code templates. I have built a huge
library of auto-expanding, parameter-driven code templates for a variety
of languages. These templates result in ultra-fast code development and
super-clean code, and facilitate the extensive in-line
documentation that is a hallmark of my work.
- Oracle tools and
related third-party tools:
- Oracle 8i
Enterprise Edition, which includes Oracle 8i Server and a host of
other tools which provide support for server-side Java (EJB, Servlets),
Perl, SSIs, CORBA, etc.
- TOAD, a PL/SQL editor
- PL/Formatter, a
PL/SQL code formatter
- Oracle Application
Server 4.0.8.1
- Oracle Enterprise
Manager 2.0.4
- Jdeveloper and other
Oracle tools
- Visio - used for Data
Modeling, Flowcharts and UML diagramming – e.g. Sequence
Diagrams.
- Sybase PowerDesigner 9. An enterprise-class modeling
package. Supports Data Modeling,
forward and reverse database engineering, UML, code-generation and a host
of other features. Creates
database diagrams than Visio (which is know to miss-represent data-types).
- Enterprise Architect UML
tool. An inexpensive, but very
nice tool for creating UML diagrams.
- Samba
- Apache
- NetMeeting
- PcAnywhere
- DBArtisan and RapidSQL from
Embarcadero Technologies – DBA tools.
- Powerbuilder 6.5
- Ecco Pro, the "World's
Greatest PIM". I use Ecco Pro to organize all of my work. Great tool!
- TLIB Version Control
System. Supports Check In and Check Out, version extractions and
compares, etc.
- Crystal Info and Crystal
Reports. I've worked with these tools extensively.
- Microsoft Office products:
Word 97, Outlook 97, Excel 97. I work with these on a regular basis.
- Internet Explorer 6.x
- IIS
- Anti-virus software
- WinBatch and WinMacro. These
provide a full macro programming language for the Windows platform.
- JRun Java Application Server
- Java 2 SDK, Standard
Edition, v 1.2.2, as part of the Sun Java Developer Connection program.
- Macromedia Dreamweaver and
Fireworks.
- IBM's Visual Age for Java.
- The vast collection of tools
that comes with Redhat Linux Professional, Version 6.2
- Many other tools and a great
reference library, including both hard-copy and CD-based resources, e.g.
several of the O'Reilly "CD Bookshelf" series.
Work Experience
8/30/01 to present:
Chief Database
Architect, Database Administrator, Systems Analyst, Software Architect and
Developer with The Fuel Web.
I regularly performed all of the above functions
on this contract. I have great breadth
and depth. Ask my references!
The Fuel Web provides a Web-based
service that combines state-of-the-art hardware monitoring of propane tank fuel
levels and related information (ambient temperatures, etc.) with leading edge
Fuel Usage Forecasting, Delivery Scheduling, Alert Notifications and many other
features. Ultimately, Truck Routing and
other functions will be added.
The working environment is a 3-tier
application, with a MS SQL Server 2000 database, and Web-based
clients. Using proprietary hardware and software technology, Propane Tank data
is gathered from user tanks, forwarded to the database (in-processing via Perl),
analyzed, used for forecasts, presented on the Website, etc.
When I joined the Fuel Web team in
August of 2001 the product was in an early-beta stage. I reported to and worked extensively with The
Fuel Web president, Mr. Tom Walker (see references). I also recruited the other database programmer and the Website
developer who were subsequently brought into the team.
Broadly stated, my responsibilities
were to interact with Tom to produce a system that would realize his
visions. This included extensive interaction
re Requirements Definitions, and a team approach to the design and implementation
of the data architecture and algorithms necessary to realize Tom's
objectives.
My major responsibilities were:
·
Chief Data
Architect.
Data
Modeling. Design, creation and maintenance
of all tables, keys, indexes,
and preparation of all related documentation.
· System Analysis and Design.
Work closely with
Tom to determine/formalize the system needs, and the high-level approaches
to be taken. Document the Functional Requirements
Specifications to be used in the Software Design and Implementation
process. Occasionally used UML Sequence
Diagrams and Use Cases.
· Software Design, Implementation and documentation
of the following types of code,
to meet the Functional Requirements Specifications:
o
SQL Stored Procedures
and Triggers
o Perl routines
·
Statistical
analysis and derivation of various Forecasting functions.
·
Manage/interface
with a Senior Database Developer and a Web Programmer as needed. Delegation of database DDL tasks when possible - this was a Mentoring
type of activity – the Senior Database Developer was able to assume the role of
an intermediate-level Data Architect during the course of the project.
·
Extensive
interface with the corporation President.
This system is currently undergoing
some revisions to the hardware and embedded software (not my area).
The following is a high-level summary
of some of the tasks that I performed for The Fuel Web:
- Re-architect the database to Normalize the data structures. The initial architecture reflected the structure of the data
as collected in the field units, and contained “repeated groups” in some
of the critical tables, as well as other opportunities for
improvements.
- Design the Data Architecture that was required to satisfy Tom's system
objectives. This was an ongoing
process during the course of the engagement as new system features and capabilities
were added. This was done via
extensive interaction with Tom. I
would typically write up all functional specifications to insure that the
requirements were well-defined. Once the requirements were nailed down, I would write up the
proposed architecture, and get approval from Tom before
implementation. Over time, we got
to the point where I would simply “proceed to implementation” for all modifications
for which there were no “business-rule” types of issues that needed Tom's
input.
- Perform extensive trouble-shooting, error-trapping and code revisions for the
existing Bulk Import procedure. Implement Transaction Processing within the Bulk Import procedure,
with extensive error reporting and Procedure Trace logging, since there
were many ways in which data errors could cause the existing import
routines to crash. Determine
problem causes and implement solutions.
- Implement modifications to populate the Normalized structures during the Bulk Import process.
- Propose, design and implement infrastructure utilities. E.g. a subsystem for logging Procedure Trace information,
allowing for the collection and presentation of detailed procedure/step
timing information, error logging for exception conditions,
etc. This formed the basis for the
subsequently implemented Notification subsystem discussed below.
- Work closely with all team members to create a Notification
subsystem that provides automated Notification to appropriate personnel
upon the occurrence of targeted events. The Notification subsystem is extremely flexible, allowing multiple
Notification modes (e.g. Email, Pager, etc.), selective delivery by message
type, flexible ways of defining delivery groups, periodic Notification
resends, and many other features. The Notification subsystem was one of Tom's many original concepts,
and we worked closely together to hammer out the design specifics. After laying out the data architecture
and design specifics, I delegated the implementation to other team
members.
- Create numerous stored procedures to provide various reports. Some of these were presented on the Website, and some were used
internally for diagnostic purposes. Many bells and whistles – e.g. User-specified report “aggregation intervals”
for data plots allowing the User to see the data as originally captured
from the field, or aggregated to any desired time-interval, such as Daily,
Weekly, etc. Design and create procedures
to provide “seemless” integration of Historical and Forecast data for
presentation purposes. Many report
“selector options” provided – many levels of aggregation across several different
dimensions.
- Design and implement numerous Triggers. Since much of the Exception Notification and setting of various
system flags and computed columns needed to occur in the Trigger code that
was fired during the data import process, the Trigger code was an
extremely critical portion of the overall system, and it was often
necessarily quite complex. Performance was a paramount concern, since we needed the system to
provide scalability.
- Create stored procedures to be used when hardware was
reassigned/moved. Perform Referential Integrity checks
and “relink” all the appropriate columns, as appropriate.
- Design and implement Perl scripts to import weather data from
a commercial data provider. The
Weather Data was imported to the database via ODBC. Import both historical data (for statistical analysis
and plots) and forecast data (to be used in Fuel Usage
projections).
- Perform statistical analysis of the data, derive Forecasting functions,
and implement these functions in the SQL code. WinIDAMS was the statistical
analysis software that was used in these analyses. This task involved positing different
predictive models, performing comparative analyses using Stepwise
Regression, evaluation of results, elimination of outliers, and the final
determination of the preferred models.
- Design and create code to determine Fill Requirements for all
tanks based on various forecasts,
existing tank fuel levels, etc.
- Replace the Bulk Import process with a “real-time” approach
that makes ODBC stored procedure calls on a packet-by-packet basis from
the Perl script that receives the data from the field units. Starting from the existing Perl code, I implemented
performance improvements and added extensive error processing (e.g. to
trap for incoming data from different units, perform Update transmission
retries, etc.). Logged all errors
and timing information to the database ProcedureTrace facility. This script uses UDP messaging to
communicate with the field units, and ODBC to communicate with the database. Provided many diagnostic outputs,
summary statistics, etc. I'm
big on providing tons of inline comments and I always provide each routine
with a “debug” parameter that produces massive amounts of inline
diagnostic outputs when enabled. Basically, I test each “code branch” as I write it, with diagnostic
outputs to confirm the correct operation of the code “just added”.
- Modify the Perl UDP messaging script to provide the ability
to update the field hardware from information in the database. Make appropriate database revisions,
etc.
- Perform performance tuning. Implement
performance improvements by using the execution timing information provided
by the Procedure Trace mechanism to identify and implement the selective
addition of indexes and a few carefully considered “performance
denormalizations”.
- Write-up Requirements Specifications and proposed solutions for all tasks
undertaken
- Create numerous
database diagrams, Sequence diagrams, Use Cases and flowcharts using
Visio during the course of the engagement. These were used both for the purpose of documenting existing
code/processes, and also for the purpose of explicating design
suggestions, functional requirements, etc.
- Create extensive inline and formal written documentation of the various procedures created. UML Sequence Diagrams, Use Cases,
Flowcharts – supplemented with tons of narrative commentaries, discussions
of fine-points, etc.
- Manage a senior database programmer and interface with the web developer.
- Additional self-contained
project to provide a Commission Report for one of the principal
investors. This project
involved significant DTS work – migration of data from multiple legacy applications
to a new “combined” database.
- Many, many other tasks – too many to discuss here – ask if you'd like further information…
10/23/00
to 8/3/01:
Senior Database Architect, analyst and developer with Front Porch.
Front Porch was an Internet startup
that was headquartered in Standard, CA. with offices in San Diego and other
international locations. They are now
defunct.
The working environment was a 3-tier
application, with a MS SQL Server 7.0 database, and Web-based
clients. Using proprietary hardware and software technology, Subscriber data
was gathered from ISP partners worldwide.
In this position I was responsible for
requirements definition, analysis, systems and data architecture,
implementation, documentation and training. I reported to several different managers
while at Front Porch and supported multiple departments and Users within the
organization. I was also involved in some of the DBA tasks (there were several
programmers performing DBA work).
My primary accomplishments at Front
Porch were:
- Designed and implemented the core system functionality as a
set of Stored Procedures that
drive Front Porch's back-end
system. I defined the overall design to be used and the required data
architecture, and also performed the detailed implementation:
- Subscriber Profiling Algorithms (Category
Interest Preferences derived from site visits)
- Subscriber Ad Viewing projections
- Subscriber Eligibility calculations by
Category, based on Subscriber Profiles and parameter-driven
"eligibility" business rules.
- Order Allocation to qualified Subscribers.
Allocations are made "by
week" over the duration
of each Campaign. AdType, multiple Category specifications, multiple
Location specifications and Campaign priority are all taken into account
during the Order Allocation process. Inventory is maintained at the
Subscriber level.
- Introduced UML diagramming techniques to the Front Porch organization and conducted
a critical design session using UML Sequence Diagrams to define
and clarify the collaboration of several system components over time. Visio
and Enterprise Architect were used to produce the diagrams that
were distributed to the concerned parties.
- Performed extensive Stored Procedure performance
optimization. Extensive execution plan analysis, runtime
"execution statistics" analysis, addition of appropriate indexes
to provide optimal performance, etc.
- Performed a variety of DBA tasks, including:
- Wrote DTS scripts to automate data transfer between
databases
- Monitored system usage and performed
performance tuning as
required
- Wrote DDL to create tables, indexes, etc.
- Defined User Roles, GRANTed privileges to
tables and Stored Procedures as
appropriate
- Installed and administered
a Crystal Info server.
- Created numerous Crystal
Reports involving drill-downs and numerous advanced capabilities.
9/15/94 to 8/31/00:
Consultant to Tri Valley
Growers (TVG), in Modesto and San Ramon, CA.
During this contract I worked on a
number of moderately large systems which were well along in the development
process when I joined the project team. I was the primary IT support resource
for the Inventory and Scheduling department. I performed the data
architecture and system implementation required to solve many complex
scheduling and inventory problems.
My primary IT management interface was
Mr. Steve Fleury, the Distribution Systems Manager. See Mr. Steve Fleury in
the attached references.
My primary User management interface
was Mr. Jim Fisher, the Manager of Inventory and Scheduling. See Mr. Jim
Fisher in the attached references.
The working environment was a Client/Server
application, with a SYBASE 4.x Server and a PowerBuilder client,
connected via DecNet. Through the course of the project the database
server evolved to SYBASE System 11. Oracle 8i was also used
extensively over the last several months of the contract. Perl was used
to create a variety of scripts.
My primary accomplishments while at Tri Valley Growers were:
- Performed extensive
Stored Procedure Optimization.
In response to performance problems in existing Stored Procedures and
PowerBuilder Selects, I became deeply involved in the inner workings of
the SYBASE Optimizer. In many instances the SYBASE Optimizer generates
counterintuitive Execution Plans, which can have disastrous performance
effects. Working closely with the resident TVG SYBASE guru, I learned many
of the undocumented "tricks" which may be required to force the
Optimizer to perform as desired. Additionally, I thoroughly analyzed the
text of several of the leading books which deal with SYBASE Optimization.
Through the judicious restructuring of Stored Procedures, and the addition
of a few well chosen "covering" indexes, I was able to replace
Table Scans of large tables, which were generating Logical Read counts in
the 100K range with indexed accesses requiring between 10 and 4K Logical
Reads. The performance improvements were outstanding.
I also defined a general approach to writing
"cost-efficient" Stored Procedures.
These Performance Optimization notes were
documented using Doc-2-Help and presented with examples to our programming
group.
The Execution Plan/Statistics analyses were
performed from Windows using RapidSQL, a product offered by Embarcadero
Software. These results were also frequently analyzed from output to a standard
ISQL output file.
Database Administration functions were executed
(when required, e.g. to add test indexes) using DBArtisan from
Embarcadero Software.
- Designed and implemented
a new approach to the Stock Allocation algorithm.
The Stock Allocation algorithm was a real-time Production Scheduling
and Inventory Allocation algorithm that was implemented as a set of Stored
Procedures.
This algorithm was called to allocate stock and make preliminary labeling
and shipping assignments for Sales Orders as they were entered.
It was not feasible to put the existing algorithm
into production because there was not enough time to process all the Sales
Orders entered, given the time it took for the existing algorithm to execute. A
4-fold performance was required.
This was considered to be a mission-critical problem.
I was invited to attend a meeting of 10 principal
members of the MIS group in San Francisco. This group consisted of high-level
professionals who were much more familiar with the operational problem than I
was, and included the designers of the original code.
The solution which I proposed was adopted in
preference to all other proposals made.
I wrote up the formal specifications, and
completely coded and tested the solution in 3.5 weeks.
A 10-fold performance improvement resulted.
The original approach had taken many man-months to develop. The basic reason
for the improvement was the transition from an "explicit enumeration"
approach to a "heuristic" approach. The heuristic approach generated
solutions which were identical to the "explicit enumeration" approach
in almost all instances, and where the two differed, there was no clear
advantage to either one - i.e. the resultant solutions were essentially
"cost equivalent".
- Assisted in the
conversion of data in a variety of formats to "SAP-formatted"
flat files.
This task involved the conversion of data from various flat-files,
Excel spreadsheets, and Sybase databases.
The approach used was to "pipe" all of
the data into a common Oracle 8i database and then to generate the
required flat files and reports from the Oracle 8i database. ODBC and
PowerBuilder "pipelines" were used to get the data from the various
data sources into the Oracle 8i database.
- Fixed existing system
bugs and implemented system enhancements.
Used internal bug-tracking system to log fixes to existing bugs as
assigned by the project manager. Performed many system enhancements,
especially involving the Stock Allocation and Scheduling Stored
Procedures. Interfaced with Users to define enhancement
requirements and specifications. Wrote formal requirements/specifications
documentation and reviewed/refined with IT management and User groups.
- Designed and implemented
system reports.
The reports were coded in PowerBuilder, Crystal Info,
and Infomaker.
- Performed extensive system
design and wrote SQL scripts, Stored Procedures, Triggers
and User Interfaces for a wide variety of purposes. This was my primary function at TVG.
- Wrote Perl scripts to
automate SQL script generation and processing.
- Created general purpose
Stored Procedures (various SQL "utilities").
- Created general purpose
PowerBuilder Functions.
- Modified SYBASE 4.x code
to compile under SYBASE System 10.
- Redesigned existing
screens to provide an improved GUI design.
1/94 to present, In-House work:
Installed and configured
all of the hardware and software packages mentioned in the Hardware and
Software Tools section above. Administered all Operating Systems, networks and
database servers (Oracle 8i, Sybase). Administered Oracle Application Server
and Oracle Enterprise Manager. Set up a Samba server and client to
provide connectivity between my NT and Linux systems. Configured Apache
to provide Perl support on my Linux system.
Developed in-house code templates using Dreamweaver, HTML, Oracle
Application Server, Perl, and Oracle 8i.
These code templates provide a set of working "3-tier architecture"
tools to be used in both Client-side and Server-side Web development. Tools
used include CGI.pm and other Perl modules, ODBC, Perl database
interfaces using the DBI module, JavaScript (embedded in Perl
scripts) and Java (just a bit). I've also developed many Multi-Edit
auto-expanding code templates (a different type of template than those
mentioned above) in both Perl and SQL to automate much of the coding process -
much less typing, more efficiency and accuracy. Installed and configured Redhat
Linux 6.2 and Solaris 8 as multi-boot operating systems (in addition to Windows
NT) on all in-house PCs. Set up Java and developed a few small Java
applications and applets.
Pre-1994 Work Experience
I have a "Word97" formatted document which provides a much greater
level of detail on my "pre-1994" work experience. If you'd like to
see more details than what's presented below, simply call me at 209 536-1787
and I'll gladly either fax or email you an "expanded" version.
5/92 to 4/93 and 9/93 to 9/94:
Consultant to General Mills, Inc., in Lodi, CA. Implemented one
system using PowerBuilder 3.0 and PowerClass, and two systems using Clarion
and a variety of Clarion 3rd party products. MS SQL Server 4.2 (Sybase 4.2)
was the database. Managed one other senior programmer. Converted the
PowerBuilder system to ObjectView. I was responsible for full system
development, from initial user meetings through documentation, training, and
support. My primary interface was Mr. Tom Hauan, the Lodi Plant Computer
Services Manager.
Extensive work with Stored Procedures, Cursors, Triggers, DDL, Windows API
calls. Installed Sybase SQL Server on in-house systems.
4/93 to 9/93:
Consultant to Sierra Pacific Power, in Reno, NV. Performed bug fixes
and implemented new functionality for an existing Clarion-based financial
planning system. I've lost touch with my reference on this contract.
8/88 to 5/92:
As owner of Eucalyptus Software, I managed a six man programming shop
during this time. I was heavily involved in the Turbo Pascal, Paradox and
Clarion projects undertaken during this period.
Consultant to Applied Materials, Inc., in Santa Clara, CA. See Mr.
Gary Hinrich in the attached references.
- Developed a sophisticated
multi-user Forecasting and Inventory Control system, written in Turbo
Pascal. Many 3rd party tools were used on this system - Turbo and
Object Professional, B-tree Filer, Blaise Power Tools, Turbo Plus and
more. Tlib was used for version control. Many advanced features such as:
- record-by-record data
compression using variant of the LZW compression algorithm (66% disk
space savings, with only 10% speed degradation)
- context-sensitive
Hypertext on-line Help
- many other features –
let me known if you'd like details.
- Created a Paradox/PAL
financial reporting application.
10/87 to 8/88:
Software test consultant to Hewlett-Packard (CSY/ADTL) in
Cupertino, CA. Development of regression tests for PANDORA.
Project highlights:
- Use of internal test
automator to establish a regressable test suite, enabling quick test
result analysis (exception reporting) to insure that new bugs are not
introduced through ongoing code changes.
- Use of internal Path Flow
Analyzer for Path Flow Coverage reporting.
- Close working relationship
with project engineers for test development and bug resolution.
- Statistical analysis of
potential performance improvements. Results impacted product development
decisions.
This project made use of Pascal, SEGMENTER, the AUTOMAN testing
environment, HP's test automator and Path Flow Analyzer, and many other HP3000
tools such as QEDIT, DEBUG, MPEX, STARS, and XEDIT, and was implemented under
the MPE V operating system.
3/86 to 10/87:
Software test consultant to Hewlett-Packard (CSY/SWQE) in
Cupertino, CA. Development of regression tests for operating system intrinsics
and system kernel of MPE XL.
Project highlights:
- Use of internal test
automator, as above.
- Other details omitted due to
lack of space.
These projects made use of SPL, Pascal, Pascal/XL, and a broad range
of HP3000 tools, including Process Handling, Dynamic Loading, Traps,
Interprocess Communications, Resource Management, Privileged Mode, and mixed
mode programming (Compatibility Mode <---> Native Mode). Extensive use of
system intrinsics was made. All tests were implemented on the HP3000 PA-RISC
machine.
9/85 to 3/86:
Consultant to Gallo Wineries in Modesto, CA. Performed
statistical analysis, as follows:
- Used SAS and SAS/GRAPH
to analyze and present data from the NIELSEN scantrack service.
- Drew conclusions and
presented written reports to upper management.
- Multi-colored side-by-side
bar charts were generated on the IBM 3287 plotter for use by Marketing.
This work was performed on the IBM 4341, under CMS. In addition to using SAS
and SAS/GRAPH, a minor amount of interface with DYNAPLAN and FOCUS was
performed.
1/74 to 9/85:
Operations Research Consultant and Senior Programmer/Analyst for Foster
Poultry Farms in Livingston, CA. Actually, this environment supported the
most technically advanced work of any environment I've ever worked in
(basically because the organization had players that understood Operations
Research concepts). My primary contact was Mr. Loy Gould. I've lost touch with
Loy and was unable to find a current phone number. I'd be glad to further
pursue finding his number if you'd like to speak with Loy – this was a great
working relationship.
Summary of responsibilities:
- Responsible for all phases
of systems development - conceptualization, design, coding,
implementation, user training, documentation, and maintenance.
- Management of in-house
personnel.
- Statistical analysis of
data and integration of attained functions into computer models.
While at Foster Farms, I designed and developed the following systems.
Except for a few "one-time" systems (e.g. the Financial Planning
program used in bank negotiations) these systems were used on a regular
basis to provide critical operational and strategic planning information. Several
of these systems were ported through major hardware platform migrations.
Project highlights:
- A Feeding Strategy system to optimize nutrient
levels given current ingredient and end-product prices, incorporating
statistically derived weight and feed consumption response functions.
- A Product Mix Optimization system. This system
used Linear Programming to provide optimal production quantities and
ingredient usages, subject to current pricing, resource availabilities and
demand constraints. Extensive "post-optimal sensitivity
analysis" was provided. This system incorporated numerous innovative
LP techniques.
- A Financial Planning program which solved
simultaneous equations to project several years' activity. Pivotal in bank
negotiations.
- A Plant Personnel Scheduling system to satisfy
staffing requirements over 3 shifts, subject to shift length and days off
requirements. Minimization of total straight time, overtime and weekend
payroll.
- A Feedmill Scheduling system implementing
complex delivery trigger points, parameterized feed consumption and
mortality curves, multiple feed types and ranches.
- A system to apply the California Dept. of Weights and Measures
tare compliance program to internally sampled data, with corresponding
compliance percentages, etc. This system enabled the identification of
seriously over-tared products.
- An Analysis of Variance system to provide reports for
experimental data.
- Several LOTUS applications, involving heavy use of macros.
- Many other
applications, typically heavy on the Math Modeling, simulation techniques,
etc.
The mainframe projects implemented above were performed on the UNIVAC 90/30
and 90/60-80. The micro projects were performed on an IBM PC.
Languages used during this period were: Pascal, FORTRAN,
C, LOTUS, BMDP, and SAS.