Thomas Alan Honermann
5243 Harvest Glen Dr. Glen Allen, VA 23059 |
Phone: (510) 823-1199 E-mail: tom@honermann.net |
Professional Goal: C++ Language and Toolchain Expert
Professional, passionate, dedicated individual committed to technical excellence and advancement in software development. Enjoys a diverse environment, challenging projects that expand exposure to new technologies, and working with other skilled workers who also enjoy a good challenge. Committed to open standards, open processes, and open discussions. C++ standards committee member.
Well rounded leadership experience with all aspects of software development including development processes, architectural design, programming languages, operating systems, processor architectures, debugging, testing, SCM systems, build systems, defect tracking systems, and documentation. Professional experience as project lead, architectural lead and consultant for teams in the United States and India.
Knowledge Base
Programming languages and tools: |
C, C++, Java, JNI, Python, POSIX shell, Make, HTML, XML, SQL |
Operating systems and architectures: |
Linux on x86 and IBM z Systems, AIX on PowerPC, HP-UX on PA-RISC, HP-UX on Itanium, Solaris on Sparc, Tru64 on Alpha, Windows on x86, z/OS |
Compilers: |
LLVM/Clang for various platforms, GNU gcc for various platforms, IBM Visual Age for AIX, Sun Forte for Solaris, HP aCC for HP-UX PA-RISC and Itanium, IBM C++ compiler for z/OS, HP C++ for Tru64, VisualStudio, Oracle JDK |
Debuggers: |
gdb, dbx, TotalView, VisualStudio, Heap debuggers (PageHeap, DUMA, dmalloc), Valgrind |
SCM systems: |
git, Subversion, ClearCase, CVS, RCS, SourceSafe |
Professional Experience
Synopsys / Coverity |
Compiler Engineer - 6/2011 – Present
Frontend compiler engineer contributing to development and maintenance of Coverity's language frontends and internal program representation.
Key achievements:
Lead the design and development of a Clang based frontend that performed translation from Clang's internal AST to Coverity's internal AST for the C, C++, and Objective-C languages.
Lead the design and development of a CPython based frontend that performed translation from CPython's internal AST to Coverity's internal AST.
Developed code for Windows used to ex post facto change the command line of a running process in order to inject alternate behavior required by a process tree monitoring utility. The code used Windows debugger interfaces to perform remote process code injection with rudimentary support for run-time relocation and linking, in order to invoke Windows APIs in the target process.
Oracle / PeopleSoft |
Senior Principal Software Engineer - 9/2007 – 6/2011
Architect responsible for platform support, product stability, development environments, build systems, programming language conformance, and third party integrations.
Key achievements:
Established and lead the Server Stability team to identify the root causes leading to abnormal termination of PeopleTools software. Using postmortem debugging techniques, this multinational team identified hundreds of defects in PeopleTools, worked with code owners to implement corrections, and reduced the number of crashes within our test environments from thousands per week to just a few. I was awarded one of ten divisional outstanding contributor awards from a group of approximately 8000 employees for this work.
Architectural lead for the team porting the PeopleTools build system for UNIX to Windows in preparation for porting PeopleTools to 64-bit Windows. This resulted in a unified build system and a consistent developer experience for all PeopleTools supported platforms.
Design of a distributed version tracking system for PeopleTools database objects with options for name tracking, content addressable storage, and automated merging for full version control. This feature was designed to enable collaborative development and improve the PeopleTools upgrade experience.
Principal Software Developer - 3/2004 - 9/2007
Consultant for developers regarding platform features, compilers, SCM and development tools, build systems, language specifications, language conformance, and debugging. Team member developing a stateful application server used to host the results of queries, optimization solutions, and multidimensional analysis.
Key achievements:
Redesigned and reimplemented the diagnostic generation code for handling abnormal termination of PeopleTools processes. All code written had to perform correctly within the context of POSIX signal handlers, Windows structured exception handlers, and had to cooperate with third party products such as the JVM. This effort exposed numerous defects in existing operating systems and lead to changes in the POSIX specification.
Implemented a cross-platform abstraction library to deal with differences between supported hardware, operating systems, compilers, and memory models in C++. The library included abstractions for multi-threading, shared libraries, processor exception handling, and file systems.
PeopleTools UNIX Porting Engineer II - 5/2000 – 3/2004
Development, debugging, and support of the PeopleSoft application server on UNIX environments. Assistance and training with regard to compiling and debugging code on UNIX and Linux.
Key achievements:
Participated in the design, implementation and roll out of a new Iterative Development Process focused on streamlining the development process and reducing process overhead.
Lead porting effort of PeopleTools to Red Hat Linux Advanced Server 2.1 and HP/UX 11.23 for Itanium processors.
Designed and implemented a new build system for compiling PeopleTools on UNIX systems based on GNU make. Improvements included parallel compilation, 100% integrity checking, cross-platform design, incremental build support, scalability, and ease of use.
Contributed to the design and implementation of ClearCase as the source configuration management environment for PeopleTools's with a particular focus on making sure it worked well for UNIX.
University of Wisconsin Hospital and Clinics |
Systems analyst - Network infrastructure team and Server team - 1/1996 - 4/2000
This was a multi-homed position, 70% network infrastructure team, 20% LAN server team, and 10% UNIX server team. Duties included network infrastructure design and implementation in a cooperative design role, maintenance of network equipment and Novell NDS design and implementation, backup of LAN server environments, custom software development, and on-call rotation participation.
Key achievements:
Lead initial Linux usage evaluation study for feasibility in production application roles and possible benefit to hospital environment. Linux was later selected to run the hospital's DNS servers.
Education
University of Wisconsin - Madison |
Bachelor of Science - Computer Science - 5/1998
Honors
Awarded an outstanding account support award from Synopsys in 2016
Awarded a divisional outstanding contributor award from Oracle in 2007
Awarded a team outstanding contributor award from PeopleSoft in 2004
Awarded an outstanding contributor award from PeopleSoft in 2003