A software generalist, with emphasis on all aspects of the software product cycle that contribute to product quality, including the design, development, and application of software test tools, source code control and build systems, software packaging and installation, and defect tracking systems. Familiar with these areas in organizations ranging from small (fews 10's) to large (100's) of engineering personnel.Five years experience in software project leadership and group management. Twenty seven years of professional software development experience. Highly self-directed, enjoys providing great support for users of mission-critical in-house systems and processes. Skilled at self-directed learning.
- Programming Languages
Currently most fluent in perl and PHP, with some Python experience. Previous work has required fluency in C, C++, Telescript (a proprietary object-oriented language in the domain of mobile agents), and the assembly languages of various microprocessor families.
- Operating Systems & Environments
Very familiar with development of software under Unix and MacOS, and the administration of these systems. Generally familiar with Windows systems.
Familiar with developing web-based application interfaces, using CGI programming in PHP and perl, as well as traditional GUI and command line/text interfaces.
Past projects have involved RDBM Systems, SQL, database design, administration, and operations; at home with with database concepts and applications in general.
Familiar with TCP/IP networking administration, concepts and applications, including NFS and NIS.
Experienced with Perforce, RCS, CVS, svn, and custom-built source control/configuration management systems. Likewise, versed in defect tracking systems, with a particular interest in the effective integration of SCM and defect tracking functions. Familiar with the internals of the Bugzilla defect tracking system.
Many past projects have included work with device drivers and low-level hardware interfaces.
March 2009 - present
I have been doing web programming and hosting work for dealers of collectable mineral specimens who sell via the web. In this work I continue to use Perforce, PHP, MySQL, and other tools. Example customer sites include:
July 2008 - March 2009 / Software Engineer
Operated and supported the Ocarina SCM system (svn). Set up multi-platform build environments. Packaged Ocarina's software. Wrote rpm kickstart scripts to automate installation/update of Ocarina software. Produced release media.
June 2007 - July 2008
Since leaving IronPort, I have been doing web programming and hosting work for dealers of collectable mineral specimens who sell via the web. In this work I continue to use Perforce, PHP, MySQL, and other tools.
March 2006 - May 2007 / Principal Release Engineer
Led an in-depth effort to identify a replacement SCM for the company's long-lived CVS repository. This resulted in the selection of Perforce.Having chosen Perforce, established a detailed migration plan, including the use of a custom near-real-time CVS -> Perforce mirroring gateway, which allowed IronPort to perform the conversion and transition to Perforce in a staged manner, in order to allow more flexibility and staged, independent migrations of different developer groups. IronPort's Perforce migration was completed in the spring of 2007.
Created training materials and presented a Perforce training to IronPort engineers moving fro CVS to Perforce.
Also helped in the day-to-day operation of IronPort's Release Engineering function, including performing product builds upon request.
IronPort is being acquired by Cisco Systems, in a transaction announced in January 2007.
January 2003 - December 2005 / Software Tools Engineer
Reporting to the VP of engineering, established the use of Perforce at Data Domain, from before the first beta shipments through general availability of the first two generations of Data Domain products. Wrote custom tools and documentation to tailor Perforce to the particular needs of Data Domain. Provided training and day-to-day support to other engineers as needed.Created and deployed custom build automation tools using programs in perl, with web interfaces built using PHP. Managed Bugzilla defect tracking and the deployment of the p4dti integration between Bugzilla and Perforce. Extended this integration with custom programming to provide enhanced defect tracking features.
Created the initial versions (from FCS and through the first two and a half years) of the Data Domain Customer Support web site, using PHP, Perforce, and C programs. Designed and implemented Perforce-based methodology for release of Data Domain software to the support website, and thence to customers.
Created back-end handlers for the email-based "autosupport" (phone home) features of the Data Domain product, including automatic case trouble-ticket creation based on customizable rules-based logic.
Acted as Data Domain liaison to the Free Software Foundation in matters of GPL compliance for the Open Source parts of Data Domain's software.
August 2001 - December 2002 / Open Source Engineer
Participated in all facets of Perforce's involvement with open source software projects. Included the operation and enhancement of the Perforce Public Depot and associated web server, registering Public Depot users, and reviewing applications for gratis Perforce server licenses for bona fide open source projects.Prepared releases of Perforce's own open source projects, such as Jam/MR, a replacement for make.
Also involved in various other activities such as cataloging and publicizing third party software of interest to Perforce users; some bug fixing in the Perforce server code; documentation reviews, etc.
June 1996 - April 2001 / Member of Technical Staff, Release and Tools Group
Initially responsible for software product build automation, automated nightly build test framework, software configuration management, and defect tracking. Helped to define policies and processes in in these areas, and to implement and operate associated tools and procedures, as the Engineering department grew more than tenfold in five years.Led a team consisting of software engineers and managers to evaluate and select a new software configuration management platform. This lead to the selection of Perforce. Went on to build CVS-to-Perforce conversion tools, and apply them to the code base for the core Network Appliance operating system and other software products.
Designed and implemented a rich set of extensions to standard Perforce functionality, aimed at increasing the ease and effectiveness of Perforce for use by development engineers and other Perforce users.
Took over the maintenance and ongoing enhancement of the Network Appliance defect tracking system ("burt"), including a complete rewrite from tcl into perl, a recasting into a client-server architecture, creation of a web-based interface, and re-implementation of the database back-end.
Invented and implemented a novel mechanism for the systematic tracking of defect and fix presence which integrates the information in the defect tracking and configuration management systems.
Most recently, maintained complete responsibility for the ongoing design, implementation, operation, documentation, and user support for the combined configuration management/defect tracking function. This in the context of a software product comprising around ten thousand source files, across dozens of branches, and the activities of hundreds of software engineers, tech writers, and test engineers.
September 1994 - May 1996 / Software Engineer and Purveyor of Bug Tracking
Designed, implemented, tested, documented, deployed, and maintained the General Magic bug and call tracking systems, used throughout the engineering and customer service departments at General Magic. Managed the evolution of the system from Hypercard-based front and back end components into a Sybase back-end, middleware in perl, and custom-built portable (Window/Macintosh/Unix) GUI front ends.Designed and implemented an email-based interface to the call tracking system for customer use. Automated custom reports per user requirements. (Moved back into Individual Contributor role at own request).
Built automated database system backup, monitoring, and alarming functions.
Developed installation scripts in perl for the Telescript Developers Kit and other product releases.
December 1992 - August 1994 / Manager, Telescript Software Quality Assurance
October 1992 - November 1992 / Software Engineer, Telescript Software Quality AssuranceThough hired initially as an individual contributor, was soon also given management responsibilities. Managed a small group of engineers charged with the creation and application of test tools and processes for General Magic's Telescript language and applications. Implemented validation tools (test driver framework and individual test cases) for the first implementations of Telescript interpreters, and a Telescript-based "device simulator" allowing low-level simulation of loads induced by large numbers of Magic Cap devices. Performed development and final product delivery builds for Telescript releases.
May 1990 - September 1992 / Manager, System Test and Release Engineering
Reporting to the V.P. of Engineering, responsible for forming a new group in the engineering department, with responsibility for system-level testing and release of all Ultra software products. Grew the group from 1 to 7 members. Guided & coordinated the activities of group members in system test of new releases, including developing test tools and methodology test plans, maintaining test bed hardware resources, performing tests, and reporting test results. Also maintained continuing responsibility for the areas mentioned below:February 1989 - April 1990 / Member of Technical Staff
Responsible for design, implementation, and operation of the processes and tools used for shared source code development, release, packaging, and installation of Ultra's host software products. Worked with manufacturing department to set up software release process, and created tools used for software manufacturing. Ported the Mips bug tracking system (see below) to SunOS for Ultra's use (under license from Mips), configured it to meet Ultra's requirements, and served as bug system administrator on an ongoing basis. Set up and maintained various on-line documents used both inside and outside of Engineering. Pitched in with various systems administration tasks.
April 1986-January 1989 / Member of Technical Staff
Design, implementation, and documentation of software tools and procedures in the areas of software system integration, test, packaging, installation, and bug tracking for the UMIPS-BSD and UMIPS-V operating systems and compiler packages. Installed and operated various software test suites including SVVS, PVS, and the Perennial UNIX Test Suite. Created custom test programs and scripts as required. Designed, implemented, installed and administered the Mips software bug tracking system, including a custom database manager and the application proper, in C and shell scripts.
March 1985 - March 1986 / Project Leader, PC UNIX group
Directed a four-member team responsible for preparing NEC PC UNIX operating system software for release in the U.S., including system test, packaging, and consultation in support of the associated documentation activities (documentation reviews, desktop publishing methods).March 1983 - February 1985 / Senior Software Engineer
Software Support for NEC personal computer systems under MS-DOS, CP/M, and UNIX.
December 1980 - March 1983 / Assistant Staff Member
Developed flight software and support tools (primarily in Pascal), for an embedded microcomputer used for real-time control of a digital signal processor subsystem in a prototype communications satellite (all in-house custom hardware).
BSCS, Utah State University, Logan, Utah, June 1979