International Business Machines Corp. (IBM)
Rochester, MNJan 2001 - present
GLIBC
Team Lead - Linux for POWER Toolchain:Jun 2007 - present
Lead team members:
Identified strategic 2011 development line items.
Identified strategic 2008 - 2010
development line items, assigned deliverable objectives to
individual team members, tracked progress, and managed line item schedule
risks as development progressed (specific examples available upon
request).
Enabled string and dynamic linker optimizations and toolchain integration for ppc476 and ppca2 micro-electronics Power Architecture platforms.
Enabled and maintained the Linux
operating system's core GNU C-library (GLIBC) for the
following POWER platforms: power4,
power5, power6, power7, et al. POWER is the
IBM branded Power Architecture server line of
processors.
Deployed POWER
platform optimized libraries in Linux Distribution
Partner enterprise operating system offerings: Novell
SLES 10 (including service packs), Novell SLES 11 (including service packs), Redhat RHEL 5 (including updates), and Redhat RHEL 6.
Delivered three externalAdvance Toolchain releases (older releases here). The Advance
Toolchain is an IBM developed stand-alone GNU
Toolchain (compiler, linker, binary utilities, system
libraries, GNU debugger, and performance tools) that provides
advance availability of the latest GNU Toolchain
package versions before they show up in a Linux OS
Distributions.
Delivered two custom Advance
Toolchain builds for IBM-internal micro-electronics
customers who have external customers of their own that are
supported indirectly.
Mentored two interns through the
release of two key product features (decimal floating point
trigonometric math functions, and quantlib optimziation for
the POWER6 processor).
Prepared and reviewed legal due-diligence presentations for clearing open source contributions for external release. Personally prepared four such proposals.
Linux GNU C-library (GLIBC) Community Contributor:
Ported the Libdfp GLIBC add-on
library into a stand-alone library using Autoconf and GNU
Make for the build framework.
Negotiated and debugged the integration of Libdfp into RHEL6, and SLES 11 SP1.
Served as architect for the
Advance Toolchain through three releases. I set
release schedules, determined package versions, resolved
package dependency conflicts, made project re-factoring
decisions, helped debug complicated bugs, and maintained (backports) the IBM GLIBC source repository branch for each release.
Designed and coded competing
solution for full featured printf-hooks for GLIBC which
added plug-in support for new printf format specifiers to
GLIBC.
Added struct-versioned interfaces to
GLIBC's PowerPC get, set, swap, and make context functions.
This patch was discarded as the context routines API was
deprecated by the maintainer. I created the following
tutorial as a result: Creating
a Versioned Struct Wrapper For a GLIBC
Function.
Coded the packaging infrastructure for libaux, a forthcoming library which simplifies the reading of the Linux platform Auxilliary Vector.
As team lead I serve as the point of contact for customer bugs and delegate them to qualified team members. I'm also the technical expert and step in when hot problems require additional help.
Worked on POWER6 optimized arithmetic, conversion, and comparison routines in PowerPC assembly language with the POWER6 instruction set.
Advance Toolchain Development
Created the Advance Toolchain (described above) as an integration test-bed for the Linux for POWER Toolchain department's co-dependent packages. This grew into a customer supported toolchain for the XL C Compiler, Powerpack product, and OpenHPC product.
Created scripts for auto-generating & updating repomd RPM (binary package) repositories.
Negotiated the technical aspects of a business relationship with University of Illinois at Urbana Champaign whereby they build the official Advance Toolchain releases and we provide them with the build scripts, build instructions, release notes, and debugging support.
Developed Docbook stylesheets in DSSSL (a Scheme derivative) for the 32-bit Power Architecture Application Binary Interface.
Answered customer bugs as third-level support (generally we get two major month-long high-severity bugs per year).
Answered GLIBC community bugs by interpreting the POSIX and C99 standards, reproducing bugs, creating test cases, reducing text-cases, providing alternate solutions, and suggesting fixes.
XL Compiler Tester - BlueGene/L Super Computer:Jan 2005 - Jan 2006
Ported XL Compiler Test Suite to BlueGene/L PowerPC 440d architecture.
Deployed automated bug reports update scripting in KSH, BASH, Perl, sed and HTML.
Debugged and cleared over 2000 C/C++ bugs in the test suite including
XL Compiler configuration incompatibilities with GNU Linux environment.
Blackbox debugged highly optimized (-O6) PowerPC assembler code to determine instruction-selection and code-generation bugs.
Identified GNU C Library incompatibilities with BlueGene/L across all nodes, front-end service nodes, I/O nodes, and compute nodes.
Improved performance on BlueGene/L IO Nodes of test-case job dispatch by 500 percent by correcting improper multi-threaded polling and timeslice usage in the I/O node job dispatch code.
Added stdin support to BlueGene/L front-end nodes job dispatch framework.
Virtual I/O Device Driver Developer - PowerPC Linux Kernel:Jan 2003 - Jan 2005
Authored or enhanced several Linux Kernel device drivers:
hvc_console.c: Extended polling console device driver back-end framework to be interrupt driven with high throughput.
viocons.c : Maintained iSeries PowerPC virtual console driver across three Linux Distribution Partner Releases.
Developed virtual I/O device administration utilities for: virtual SCSI server (vscsisadmin), hvcs (hvcsadmin), virtual SCSI server initi scripting (/etc/init.d/ibmvscsis.sh).
Created IBM intranet web-based XML/XSLT test-case report suite using Xalan, Perl, and Apache.
OS/400 Kernel: Virtual I/O Developer:Jan 2001 - Jan 2003
Developed multi-threaded telnet server in C++.
Asynchronous sockets server.
SSL based encrypted handshaking.
Inter-partition communication with partner logical partitions.
Maintained virtual console, virtual SCSI, and virtual disk (CD/DVD) inter-partition communication drivers for sharing real devices with partner logical partitions.
Performed Virtual SCSI performance analysis and code optimization.
Aatrix Software
Grand Forks, NDJun 1998 - Dec 2000