7005 Orofino Drive
El Dorado Hills, CA 95762
(530) 676-7005 / (530) 558-9270


Create great cost effective software.



December 2014
to present

University of California, Davis

December 2014
to present

Programmer IV

(UC Davis Medical, Pathology Informatics Dept)
  • Work on a development team providing vital records - birth certificate, death certificate - entry, registration workflow processing, data import / export and reporting for California Department of Public Health, local registrars and other local stakeholders.
  • Create the AngularJS single page app (SPA) front-end architecture to go on top of a Java based web services middle tier.
  • Work on Java business logic and validation when needed, as well as database migrations and application deployment, support
  • Create automated production monitoring scripts.
  • Create automated integration testing scripts using test tool to automate operation of a web browser and check expected results.

June 2010
to December 2014

Franklin Templeton Investments

June 2010
to December 2014

Principal Software Engineer

(Franklin Templeton Investments, Investment and Wealth Management Technology Dept)
  • Lead and advise an off-shore programming / application administration team creating and maintaining web and document formatting systems -- the customer facing systems for the Fiduciary Trust subsidiary.
  • Overhaul web application to perform more work in the background and load results later via Ajax calls to avoid long page load times.
  • Add tax report service to client portal web site - run XMLRPC service call upon login to get document list for client, put index list in local non-session cache, enable menu option if data present. (use additional calls to retrieve PDF data from service and download to client as documents are selected)
  • Implement an automated daily build process for (Weblogic J2EE) web application, and start on an automated test suite for the application (JUnit + HtmlUnit). The "daily" build process runs twice a day on a set of named (CVS) branches to make sure that recent work on either shift does not break the build of the system, and to create a list of changes made on each branch for later reintegration. The automated tests run the web server, request pages and scan them for expected results, reducing the need for manual testing.
  • Specify server and application changes to be made for security audit compliance.
  • Develop primer level training courses for Javascript, Perl and Groovy languages for presentations made while traveling to branch office in Hyderabad, India. (have current valid US passport, as well)
  • Key contributor in task force to document application development group software configuration management policy guidelines and best practices; took part in continuous integration setup research to support agile (scrum) development.
  • Active member in weekly Architecture Technology Council meetings to review upcoming projects and new tools.
  • Key contributor in task force to investigate possible use of scripting languages such as Ruby, Scala and Groovy. (Scala is not very "dynamic", but it does support scripting)
  • Investigate use of MongoDB for short term object persistance.
  • Franklin uses a yearly bonus system rather than "attaboy papers" (awards), discuss if this is of interest.

August 2005
to June 2010

LexisNexis Examen

May 2009
to June 2010

Senior Software Engineer

(LexisNexis Examen, PSO Engineering Dept)
  • Work on special research / documentation projects, and proof-of-concept projects.
    • A recent project was to integrate with another vendor's system as follows: create a generic java interface package to abstract similar systems; use Axis2 to make the web service (SOAP) client calls to implement the interface; implement a few mockup pages to simulate a section of our product built on top of the third party service; make a few minor interface improvements with AJAX methods using the Prototype library.
    • Another project was to create a web service offering. I chose to create a RESTful interface, with example HTML + Javascript pages as an example usage of / tuorial for the API: provide a form for each call to enter parameters, then display the request and response in an accompanying panel using AJAX.
    • Brief proof of concept to review documents from company's main applicaion offline on an iPad.
  • Help out on EDI (PSO Engineering) work when needed (below).
  • Provide advice on past application (Engineering) issues worked (below).
  • Decided to switch from Eclipse to NetBeans IDE for POC projects, due to plugin integration (including support for additional programming languages), as well as better keyboard navigation support and window undocking.

October 2007
to May 2009

Senior Software Engineer

(LexisNexis Examen, Engineering Dept)
  • Support, maintain and enhance a "legal spend management" / "matter management" application in a J2EE (JBoss) environment, including some JavaScript and Struts work.
  • Develop a data transfer system between the Examen application and another LexisNexis subsidiary's matter management application which was written in .Net. I created a generic C# .Net program to listen for network requests from the java application and perform the needed reads and writes (similar to SOAP, but customized for better performance for a specific use). I built and installed Mono on Linux for use as a "cross compiler" to build the C#.NET DLLs, allowing me to have a single build process for both Java and C# code on this project.
  • Earned July 2008 Employee of the Month.
  • Help out on EDI work (below) when needed.

August 2005
to October 2007

Software Engineer

(LexisNexis Examen, PSO Engineering Dept)
  • Support EDI to and from a "legal spend management" application in a J2EE environment.
  • Design & develop a Java application framework for EDI import / export jobs. As jobs appear in a queue, a cascaded layer of configurations is checked and a job handler is constructed via reflection, then given to a thread to be run in parallel with other jobs (up to a configured limit of active jobs at a time).
  • Create batch processes on top of an EJB / stored procedure (Sybase T-SQL) stack.
  • Create a Swing job queue editing program to help manual job scheduling / rerun.
  • Create a perl script regression testing suite to rerun EDI import jobs, and "screen scrape" expected results from the web application to which the data was imported.
  • Create software configuration management policies and tools for the EDI group based upon use of the MKS Source Integrity revision control and change management application.
  • Research JSP/Servlet, EJB and stored procedure code in main application to determine use of data transferred to and from EDI.
  • Support client implementations, operations and research.
  • Use Eclipse and Ant in addition to the items above.

June 2005
to July 2005

Contract Programmer


  • Develop an asset management web application for a lodging and hospitality company.
  • Develop and debug a web application in an MS Windows XP and Visual Studio .Net environment.
  • Create aspx pages and ascx custom controls, as well as C# code-behind classes, on top of an MS SQL Server database using NHibernate object/relational mapping.
  • Create a regression testing suite for the database mapping assembly.

August 1995
to December 2004

DST Output
formerly known as:
Output Technology Solutions of California; International Billing Services (plus contracting).

April 2001
to December 2004

Team Lead Developer

(DST Output)
  • Design & develop a Java application framework for statement processing applications.
  • Develop documentation and code generation tools to scan a statement print mockup and capture the look and feel, as well as embedded input mapping directives.
  • Design & develop software to translate incoming mainframe data files into XML for formatting by a third party tool (in Java & Perl).
  • Design & develop a high volume processing facility for a large telecommunication customer which does about 1/6 of the EDH factory print volume (for reference, this factory creates about 2% of all US first class mail), including a file tracking system using JDBC on Oracle. Highlights:
    • Receive several dozen to several hundred files per day, containing on average about a half million pages of data total.
    • Validate incoming files, record validation status in database via JDBC, Oracle (production) / PostgreSQL (prototype).
    • Automate grouping and scheduling of compatible data sets as needed based on volume and processing deadlines, record production status in database.
    • Provide interactive file browsing / selection restart tool via AWT, JDBC.
    • Report on processing / validation status to production support team via web query interface (initially done as "an evening at the improv" with apache/CGI/Perl wrapped around a JDBC tool).
    • Scan incoming formatted data, insert out of band factory control data, parse and reformat various payment stub formats to fit a single paper and envelope stock type (another unexpected requirement -- improvise, improvise, improvise). This high volume / speed work was done in C, while the metadata management mentioned above was Perl & Java.
  • Write a few CGI & JSP report / query screens for internal status tracking.
  • Conduct developer training sessions for the department on topics such as: Java programming; source code revision control; production on-call support; in-house application framework usage.
  • Earned 1st quarter 2002 teamwork, 2nd quarter 2002 teamwork, 4th quarter 2002 innovation, 1st quarter 2003 customer satisfaction awards.
  • Duties from below, other than primary on-call.

December 1999
to March 2001

Senior Software Engineer

(DST Output)
  • Lead a team of up to 6 other programmers in a networked development environment using RCS, make, ClearCase, gdb (GNU debugger), vi/emacs, Perl and various Unix data manipulation utilities.
  • Designed and developed library code and intermediate print file format for use as standard project template.
  • Developed new systems under AIX, migrate existing systems from IRIX to AIX, converted some configuration / notification GUI popups from a legacy C library to tcl/tk scripts.
  • Maintain and troubleshoot a Java servlet communicating over HTTPS using XML to a VB applet on remote client PCs. This required me to rather quickly pick up development in a Windows NT environment using MS Visual Studio (J++), IIS, ASP, COM objects and Visual Source Safe. This application allows secure, remote data entry of statement printing configuration data across the internet.
  • Co-authored (with several others) programming standards document for my department.
  • Review new system design and implementation.
  • Earned 4th quarter 1999 productivity, 3rd quarter 2000 customer satisfaction awards.
  • Duties from below.

January 1998
to November 1999

Software Engineer

(DST Output)
  • Duties from below. (as an employee)

August 1995
to December 1997

Contract Programmer

(DST Output)
  • Develop and maintain financial and telecommunications statement formatters (for printing and on-line viewing) written in C, C++, (Oracle) Pro-C for a distributed processing ("client server") environment (TCP/IP sockets under SGI-IRIX) feeding a mass printing/mailing factory (e.g. - multi million page quarterly runs) under IRIX (production) and Linux (prototyping) platforms.
  • Develop, maintain and document data analysis, support and code generation utilities in C, Bourne/Korn/C shell, Perl, HTML.
  • Provide 24 hour on-call support, analyze and document system failures.
  • Original 6 month contract extended several times (29 months total)

September 1994
to June 1995

Computer Programming Teacher

Modesto City Schools

  • Instruct high school students in BASIC programming languages on both a DEC/RSTS minicomputer, & a PC/Windows for Workgroups network.

March 1993
to September 1994

Programmer / Analyst

Morada Corporation
(plus contract work October 1992, January, February 1993, October 1994 to July 1996)

  • Implement & maintain program development tools for (RPG language) programmers to use. These tools were written in C, running under Unix, MS-DOS, Windows NT, VMS & OS/2, to emulate operating system & programming language features from IBM System/36 & AS/400 minicomputers.
  • Develop PC-only utilities for MS-DOS & MS-Windows (Workgroups/NT) using Microsoft & Borland C++ compilers.
  • Assisted in "porting" a System/36 (RPG) database to a client-server (C-Oracle-SunOS) environment.
  • Test/develop test plans for new/modified programs to ensure quality control.
  • Given responsibility of developing several new utilities for the product because "You seem to get them done" (as opposed to "90% complete")


Bachelor of Science, Computer Science.

California State University, Stanislaus.


Use of the following resources at home: