Sr. Software Engineer with over 20 years of varied experience as a software developer. Specializations in Software Configuration Management, Release Engineering, Build Engineering, workflow automation, Installer Development, and Deployment Engineering. Creative problem solver with strong analytical and communication skills.
Perl, Java, C/C++, Visual Basic, Awk, XML, bash, korn, sh, InstallScript, 4NT/4DOS shell, NT/DOS Shell, Ratfor, FORTRAN, PostScript, Assembler
ClearCase, UCM, ClearQuest, ClearTrigger, MultiSite, cqperl, clearmake, make, gmake, omake, Maven, Cruise Control, Ant, Visual SourceSafe, PVCS, InstallShield, InstallAnywhere, InstallBuilder, InnoSetup, CodeWright, Eclipse, Interwoven TeamSite
Redhat Linux, Sun Solaris, Cygwin, Windows XP/2k/NT/9x/3x, DOS, other unix (Tandem Non-StopUX, AIX, HPUX, Solaris, QNIX), VM/CMS, OS/TSO, VAX/VMS
Computer Sciences Corporation (11/2008 - present)
Tools Writer, PDTools Team, MUOS program, General Dynamics, Scottsdale, AZ
- The RAN tools team and other tools teams was reorganized into the PD Tools team, with division-wide scope.
- I continue to support MUOS RAN, ClearCase, and ClearQuest, but am now focused more on writing workflow automation tools for MUOS-wide application, primarily in perl, utilizing the ClearQuest API. The focus is much more on the Windows platform, though of course I make the tools cross-platform where feasible.
Computer Sciences Corporation (6/2007 - 11/2008)
Software Configuration Engineer, SDE Tools Team, MUOS program, General Dynamics, Scottsdale, AZ
- At close of Land Warrior program, I transitioned to a much larger SCM challenge, joining the 15-person RAN Software Development Environment Tools Team. The team uses ClearCase, ClearQuest, CearTrigger, Build Forge, etc. to achieve SCM of a large codebase. This is over 300 VOBs, 3 million lines of code, in a complex hybridized UCM/Base-ClearCase environment, with lots of triggers and heavy workflow automation.
- Writing GUI and command-line tools in Perl, Tk, and C++.
- Supporting SWIT teams with SCM, UCM project architecture, workflow automation, and test automation
- Providing UCM project architecture, UCM administration, writing UCM support tools
- Developing/documenting new and changed procedures
- Diagnosing and solving user problems.
- Diagnosing, proposing, implementing improvements to the CM tools and workflow automation
- Lead for implementing automated testing of overall SCM workflow automation.
- Doing ClearCase and ClearQuest administration
Computer Sciences Corporation (3/05 - 6/07)
Build Engineer/Software Configuration Manager, Land Warrior program, General Dynamics, Scottsdale, AZ
- I was asked to rejoin this development team, to lead the 2-person SCM/Build/Release sub-team. This is a pure linux and linux-embedded development effort using Open Source components, in-house linux kernel and driver modification, and object-oriented application development using C++.
- Responsible for SCM in a linux environment. Major tools: Clearcase/UCM (Unified Change Management) and Bugzilla.
- Made major improvements in build and release automation. I developed a toolset of 80+ scripts totaling over 5,800 lines of bash and perl code.
- Responsible for document/data CM in a Windows environment. Major tools: SubVersion.
- Wrote SCM plans that embodied best practices compliant with CMMI Level 3.
- Supervised the design of Data Configuration Management Plans.
- Developed SCM audit procedures.
- For enhanced change control, I improved the ClearCase/UCM coupling to Bugzilla, our bug-tracking tool.
- Performed Linux and WinXP administration.
- Provided ClearCase/UCM mentoring and training to developers.
- Performed ClearCase administration and troubleshooting.
- Designed/created ClearCase/UCM projects and project strategies, to support both the development team and the automated testing team.
- Developed makefiles.
- Developed RPM-based installation packages.
- Diagnosed and fixed build scripts and makefiles written by others.
- Made contributions to the application code.
- Developed disaster recovery plans and carried out procedures.
- Performed builds, prepared media, provided deliverables to the customer.
JP Morgan Chase Investment Bank (11/04 - 3/05)
Build Engineer/Software Configuration Manager
- Worked as an employee in the Houston Development Center.
- Worked with Ant, Maven, and Cruise Control in a Java/BEA/Websphere shop.
- Worked on a ClearCase UCM implementation team, developing policies and standards for UCM implementation and working with individual teams, taking them through the process of conversion (typically from CVS) to Clearcase and UCM.
- Left to heed the call to return to the team I left at CSC. JPMC says please consider them in futery -- I’d be welcome back.
Computer Sciences Corporation (5/04 - 10/04)
Build Engineer, Land Warrior program, General Dynamics, Scottsdale, AZ
- Became part of a two-man Software Configuration Management and Build team administering Linux and Clearcase in a 20-developer shop.
- In a pure Linux shop, doing Clearcase UCM management, Clearcase administration, builds, build automation.
- Laid off, along with most of the team, because of a work stoppage.
Dell (3/04 - 4/04)
- Joined a 10-person PowerEdge/OpenManage installer team.
- Although originally hired to fix java bugs in an older suite installer, I worked with InstallShield DevStudio 9, setting up build scripts for complex msi/msm builds and doing similar things for producing Linux RPM builds.
Dell (6/03 - 3/04)
Joined the 6-person PowerEdge/OpenManage SCM Team, to assist with a massive migration into ClearCase Multi-Site/UCM, and to design/implement a CMM Level 2 compliant Build Management Facility. However, the BMF was shelved and I took on the task of developing extended monitoring and reporting capability around the ClearCase and UCM activities.
Current responsibilities are:
- Writing report-generators for management’s view into the activities of teams based in ClearCase MultiSite/UCM.
- These custom reports track development efforts by reporting and doing metrics on UCM projects, activities, baselines, streams, and components, and provide notification capability for conditions that may need attention.
- These reports run daily and are presented on the SCM internal website. In addition, users can generate their own reports as needed. The report generators, 7k lines of Perl, are in the form of several scripts that share a re-usable library of common code.
- Devised an automated regression-test framework, following Kent Beck’s Extreme Programming approach of first writing the test, making sure it fails, then writing the functionality that will make the test succeed. The result is that most of the functionality can be regression-tested with a single command, and this has been a big help in rapidly evolving these highly visible reports without a lot of error.
- As a part of the reporting/monitoring effort, driving a project to create a shadow database in SQL Server, for the purpose of providing a more general query/drill-down/reporting capability. This involves directing the work of a DB developer, and getting requirements from three managers. In addition, suggested using Rational ClearQuest as a database engine, to provide this database engine capability, have received approval, and we are about to engage in an evaluation.
- Have learned how to write and interface custom reports to ClearCase Report Builder.
- Run a bi-weekly meeting with the monitoring/reporting stakeholders, 6 representatives from various management, development, and test areas, for the purpose of iteratively gathering requirements, in order to ensure the project satisfies it's customer's needs.
- Consult with teams on build issues and build automation design.
- In charge of driving the SCM Team’s process improvement effort, which involves facilitating a weekly SCM team meeting and associated process improvement supervisory activities.
- Identifying needs and writing ClearCase triggers for workflow enhancement.
- Setting up ClearCase and NT Server monitoring processes.
- Provided scripts to help teammates with migration efforts, for example to correct case errors in element names when doing secondary imports from SourceSafe to ClearCase.
Marsh PM Internet Technology Group (9/02 - 11/02)
- Was hired to create the next generation company-wide automated software production system. This consisted of two efforts:
- Determine requirements and specify the release engineering process.
- develop an automated build system:
- Deterministic: build system completely determines build environment so that build proceeds from a known state.
- Repeatable: build state info is archived so that past build environments can be re-constructed.
- Accountable: all build states, activities, and outputs are recorded in a structured way.
- Extensible: the build system framework is independent of that which is built. A well documented interface permits new build inputs and outputs to be spedified.
Interwoven (9/01 - 8/02)
Senior Release Engineer
- Designed/implemented an automated dependency-tracking system
- Interwoven needed an accurate and automated way to determine exactly what files to include in a service pack or patch.
- Made major contributions to the design, and did the implementation of a system that compares the current build to the baseline build, and provides this list of only files that have changed in a meaningful way. This meant writing sophisticated language-aware tools for one-time initialization of over 100,000 source files, plus new workflow and build-time production modules.
- Wrote these in Perl, such that they could run on both UNIX and Win2k platforms. The work required that I gain an in-depth understanding of the internals of both UNIX and Windows versions of TeamSite 4.2-5.51, the source file organization, the source code branches and branching strategy, source generators and the complex Interwoven build system.
- Since tracking the dependencies required embedding tracking information in source and built files, I had to understand compiler output formats (C, C++, and Java), as well as understand the syntax of XML, HTML, ASP, and JSP files, in order to create a scanner that could locate and read the tracking data in built output (i.e. executables, Java JAR/WAR/EAR files, etc.)
- As part of this effort I also developed a sophisticated perl TeamSite Workflow module for the source file submission workflow.
- maintained complex Windows and UNIX service pack installers.
- These were being put together by hand, by copying the previous service pack’s source. There was no source control. The UNIX service pack install scripts were Bourne shell based. The Windows service pack installers were based in InstallShield 5.5 or 6.3, with custom InstallScript. When I started, there were many versions of these installers, each with slightly different functionality, and a new one was created for each new service pack release. Devised methods and scripts to more effectively reuse existing code. This involved comparing all the installer variations and re-writing large parts of the installer code, to support modularized functionality. Once the installers were properly modularized, I aggregated all the variations into a single configurable installer, which I made configurable from property files. I did this for both UNIX and Windows installers.
- During this process I discovered that locked file support was not being used in the Windows installers, and I implemented this feature, which involved enhancing the way NT services were stopped/started versus when to reboot, and how to ensure that post-install configuration steps do indeed get postponed until after the reboot, if there was one.
Trilogy Development Group (5/98 - 7/01)
Build Manager and Installation Engineer
- Led Trilogy’s software build and installation teams and trained/mentored 5 other team members. This team produced builds and installers, but also functioned as a company-wide advocate for Software Configuration Management/Release Engineering best practices.
- Successfully improved Trilogy’s software build process. Technology platforms included C++/VB/COM+/Windows, EJB/J2EE, and other cross-platform Java. This was a complex build system that produced builds for weekly releases of over 50 products in several suites. When I started, there were 5 build machines and one server. I automated many of the manual steps, permitting the system to grow to 20 build machines and 6 servers, with web-driven hourly builds.
- Helped develop a cutting edge in-house source control system, using ClearCase as an engine. I developed procedures for converting source trees from the old systems to the new system. Contributed to the modification of the build system to accommodate the new source control system.
- Working with a PhD in SCM and a ClearCase expert as teammates, I learned how to administer a complex Rational ClearCase source control system consisting of hundreds of VOBs and thousands of Views. I contributed to strategy for VOB automated backups, and View and VOB organization. I gained experience with command line usage of ClearCase, and how to call it from Perl scripts. While solving a subtle and recurring intermittent NT server crash, I became aware of some of ClearCase's limitations, and it's implications for our administration strategy. I participated in discussions on trigger strategy, and helped analyze how to implement ClearCase Multi-Site between Austin and India.
- Administered large (400,000 files!) PVCS Version Manager system
- Administered large (900,000 files!) Visual SourceSafe system. As the main company resource, I worked with groups in Core Development, Consulting, and several of Trilogy’s spinoffs.
- mentored disparate groups on best usage practices for using the main database, and for administering their own database, if justified. This included describing VSS design flaws, admonitions about the impact that renaming has on repeatability of builds, the difference between deleting and purging, the sanctity of the archive, how to avoid corrupting the archive, backup strategies, when to branch, etc.
- Interfaced the automated build system to VSS databases from the command line.
- Wrote conversion scripts when we moved on to another source control system.
- Set up customer-specific secure VSS databases, accessed by our on-site consultants.
- Upgraded main database to a RAID 5 server, and improved the backup strategy.
- Devised best practices for other VSS administrators to follow.
- Analyzed and fixed multiple VSS databases.
- Analyzed impact of moving from VSS 4 to VSS 5 to VSS 6.
- Determined the main company VSS database was too large and devised the strategy for dividing it into smaller pieces.
- Administered and improved multiple build system NT servers and source control NT servers, as well as the 10-20 build machines.
- Developed tools to further automate the build and release process
- enhanced complex InstallShield-based Installers. These installers were re-usable, configurable from sets of INI files, and consisted of 30,000+ lines of InstallScript.
- Developed Java-based cross-platform installers using InstallShield MultPlatform, including writing custom java extensions.
- Helped develop Java-based cross-platform installer to replace InstalShield MultiPlatform
- Developed automated source escrow generation system
- Helped develop an automated test system. Trilogy wanted to create a web-driven automated test lab to support an Extreme Programming inspired automated test framework. I provided input on how best to layer software onto a test machine, starting with a ghost image of the desired basic OS, followed by optional re-packaged installations of Oracle, Office, etc.
- Served as a resource for the developers and QA engineers on source code
Integrated third party tools and components into the build and release process.
- Interfaced with Product Management, Consulting, Development, and QA to develop and implement product installation, packaging, licensing, and distribution strategy.
- Performed scheduled and on-demand software product builds for Development and QA
- Developed and implemented product-wide configuration management processes and practices to support new and existing products.
- Developed revision control and software process policies and interacted with groups across Development and Consulting on build and release issues.
Data Strategies International (11/97 - 4/98)
- Wrote Windows device driver for Network Packet Driver (16 bit DLL, written in C)
- Advanced Micro Devices
- Worked on improvements to AMD’s software test and simulation facility
VTEL Corporation (11/94 - 11/97)
Staff Engineer, Windows Programmer (18 months as consultant, then 18 months as employee)
- Devised an ownership protocol whereby Diagnostics and Conferencing software could safely share the hardware. Implemented in C++ as a DLL with a C API, this centralized all hardware access services.
- Ported DOS-based diagnostics to Win32 platform, and designed/implemented GUI.
- Responsible for all Plug and Play aspects of VTEL hardware.
- Developed sophisticated software installers using InstallShield InstallScript.
- Created the Build Team and trained the personnel.
- Provided Windows development support
- Analyzed and fixed problems with low-level DLLs
Computer Task Group (10/91 - 11/94)
- Database development in C on a QNIX-based distributed environment.
- Dell Computers
- GUI development using VB
- Tandem Computers
- Test automation development for testing UNIX real-time kernel processes.
Shafir, Inc. (10/91 - 11/94)
Cofounder, Shafir, Inc.
- founded this startup in the computer mapping and eCommerce space. Two co-founders and three employees.
- Developed GPS-enabled street-mapping graphics software using VB and VC++
- Did Java toolkit development. We won a JARS Top 5% Award.
- Did Java-based business graphics toolkit
- Wrote a Java-based installer
Frank Russell Corporation
- Provided graphics driver support for Impressionist-based shop producing thousands of graphs and charts per month.
- Eight years as software developer on Graphics Team (5 years as Lead for the Impressionist team)
- BS in Physics, University of Texas, Austin
- Graduate work (60 hrs) in Theoretical High Energy Nuclear Physics, Texas A&M University