Ryan S. Arnold - Software Engineer
994 Lincoln AveHome: (651)-402-4762
Saint Paul, MN 55105ryan.arnold@gmail.com
http://ryanarn.blogspot.com/
Employment History:
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 external Advance 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:
      • Serve as PowerPC architecture maintainer.
      • Serve as PowerPC Ports (embedded PowerPC) maintainer.
      • Moderate libc-alpha@sourceware.org mailing list (since Feb 2008), which is the primary development mailing list for GLIBC.
      • Maintain the GLIBC wiki and serve as primary documentation contributor.
      • Own #glibc Internet Relay Chat channel (on freenode.org) which is used as a realtime GLIBC developer's forum.
      • Mentor new GLIBC developers and users on the libc-help@sourceware.org mailing list. Co-founded this mailing list in Feb. 2007.
      • Owner of the ibm/* Git repository namespace branches on sourceware.org which holds IBM relevant branches of GLIBC.
    • Development:
      • Official maintainer of the GNU Decimal Floating Point C-Library (Libdfp) which is an extension of the C-programming language's math library for decimal floating point types support per ISO/IEC TR 24732.
      • 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.
      • Added dynamic assembler instruction selection mechanism to GLIBC PowerPC context routines to select appropriate `mtfsf' assembler instruction based upon availability of DFP facility in the CPU.
      • 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.
    • Specifications & Technical Writings
  • GLIBC developer - Linux for POWER Toolchain:Jan 2006 - Jun 2007
    • Designed and created the Decimal Floating Point C Library (Libdfp) as a GLIBC add-on. See Libdfp README.developer - History
      • 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.
    • Wrote a tutorial entitled Debugging PowerPC ELF Binaries.
    • Wrote whitepaper entitled "GAS CFI Directive Usage for 32-bit and 64-bit PowerPC".
  • 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.
      • hvcs.c: Authored pSeries PowerPC high throughput, inter-partition tunneling TTY device driver.
      • hvc_vio.c: Extended pSeries PowerPC virtual console device driver front-end.
      • hvc_cbe.c: Authored port of PowerPC CELL console device driver as a front-end for the hvc_console back-end.
      • hvc_sim.c: Authored port of PowerPC CELL simulator console device driver as a front-end for the hvc_console back-end.
    • Wrote Linux Kernel HVCS device driver documentation (Documentation/powerpc/hvcs.txt)
    • 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
  • Project Development Lead:
    • Designed processing engine for MS Windows based State and Federal Tax Forms electronic submission software.
    • Assigned work items to team of five developers.
    • Lead programmer for engine coded in MS Visual C++.
Recognition:
IBM "Top Contributor": March 2008 - March 2011
IBM BRAVO award: July 2007 - In recognition for delivery of the Advance Toolchain.
IBM BRAVO award: September 2010 - Continued excellence.
IBM "Above average contributor": March 2005 - March 2008
Education:
BS Honors (Cum Laude & Scholar In The Honors Program) - December 2000 (3.5 GPA)
BS Computer Science - October 2004 (3.5 GPA) University of North Dakota
Senior Honors Thesis: A case study in Software Engineering Chair: Dr. Chang-Hyun Jo
References available upon request.