Leonard J. Bottleman

Leonard Bottleman
1824 SE Mulberry Ave
Portland, OR 97214
(503) 233-4124 home
(503) 525-8032 work
leonard@whiteweasel.net

July 13, 2007


OBJECTIVE A responsible position emphasizing software design and implementation.
SKILLS
  • Very strong software design and implementation abilities emphasizing function, performance, maintenance and portability.
  • Excellent C programming skills.
  • Excellent multi-threading programming skills.
  • Excellent knowledge of Linux and the ability to port applications to other platforms, including Windows.
  • Exceptional ability for debugging and solving problems.

EXPERIENCE

January 2006 to present Oracle Corporation, Portland, OR
Consulting Member of Technical Staff, Oracle Applications Server

Member of the Workload Management (WLM) team of the Oracle Application Server (OAS).

  • Designed and implemented the low level per-thread metric gathering APIs for C and Java.
  • Ported and debugged the Micro State Accounting Linux kernel patch for ix86 platforms.
  • Re-factored and extended the C version of the Oracle Dynamic Metric Service to provide better performance and new functionality.
  • Instrumented Oracle's version of Apache2 to provide run time metrics for throughput on a per request per module (and per virtual host when applicable) basis.
  • Designed and implemented the C context management code, which maintains and transports a per request context, which is through and used by every step of request processing from Apache down to the database, and provides a mechanism by which performance of each phase of request processing can be monitored.
  • Created Apache modules to create and associate a context with each new request as well as instantiate WLM monitoring based upon dynamic user defined criteria for request performance.


September 2005 through December 2005 Sophos, Inc., Vancouver, BC
Senior Network Engineer, Sophos Appliance Project
  • Designed and implemented the automatic software upgrade subsystem for the Sophos appliance, a turn-key email hardware/software solution for automatically blocking virus and spam. The upgrade mechanism automatically detects new software available at Sophos, downloads it, and schedules its automatic installation based upon user configured windows (time of day, day of the week, maximum delay) and the priority of the new software update. The upgrade system manages the installation of the new software, validating the new software against expected checksums and behavior, and rolls back to the previous version in the event of errors.
  • Provided consulting and support for all C coded projects.


April 1998 to September 2005 Oracle Corporation, Portland, OR
Principal Member of Technical Staff, Oracle Applications Server

Member of the Distributed Resource Management (DRM) team of the Oracle Application Server (OAS).

  • Design and project lead for the Oracle Process Management and Notification (OPMN) server -- the key component of the OAS architecture, providing always available high performance functionality utilizing a highly multi-threaded design with a very small memory and disk footprint.
    • Provides a publish/subscribe notification (the ONS portion of OPMN) system used by the entire OAS product as well as the Oracle database.
    • Manages all OAS processes, including start, stop, restart, crash recovery, and process health monitoring.
    • Repository for OAS system and process metrics.
    • Provides single point management for any and all processes running in multi-node installation.
  • Designed and implemented all of the core functionality for OPMN.
    • Completely portable C language implementation utilizing efficient and modular designs throughout.
    • Automatic detection of other OPMN servers within a multi-node install, and auto-configuration of connection topology.
    • Establish network topology membership for multi-node OPMNs which rapidly detects system outages or network disconnects, and provides notifications and actions for such events as well events related to group joins, or even mergers of existing groups.
    • Automatic recovery of process state after system crash.
    • Detection and resolution of duplicate notifications.
    • Dynamically loadable modules to perform specific management tasks for different process types.
    • OS independent API used by the process modules to perform all required tasks including multi-threading and synchronization, memory management, socket IO, SSL encryption and process creation and death detection.
    • User configurable dependencies (including to remote nodes) to ensure resource availability and component start order.
    • Service fail-over functionality for specified process types to ensure a single instance is always running across a multi-node install.
    • Resource management directives, which allow users to configure OPMN actions based upon conditions (time of day, application response time, CPU usage, memory usage, etc.).
    • Flexible network security layer that allows use of either the Oracle SSL package or the Open SSL package (used by OPMN, IASPT, and various Oracle Apache modules).
    • OS independent configuration, with automatic conversions of paths where required.
    • Built in debug code paths that display process status and health upon request.
  • Spearheaded the application server's move to Linux development, including research for development and debug tools, system configuration, and Linux kernel, library and environment issues. Served as a consultant for resolving Linux issues for other groups, such as build and QA.
  • Designed and implemented the Oracle Internet Port Tunnel Server (IASPT), which allows HTTP servers outside a firewall to route requests to (and receive responses from) multiple application servers behind the firewall utilizing a single port.
  • Provided support for OPMN process module writers (both internal to our group as well as third party authors).
  • Provided technical leadership and consulting for all groups within our division.
  • Initiated, installed and maintained a development source control system based on CVS that provides automatic backups, change reports, and simulated product install homes from within the source tree itself, thus dramatically simplifying product test and verification procedures.
  • Redesigned the Resource Manager module to significantly improve application scheduling on a process, cartridge instance, and object reference basis.
  • Redesigned the Configuration Provider module's initialization algorithm and achieved a 6000% increase in performance.
  • Found and fixed many bugs and memory leaks in various modules.


August 1994 to April 1998 Informix Software, Portland, OR
Senior Software Engineer, Continuous Data Replication Group

Part of a team responsible for designing and developing the continuous data replication (CDR) functionality for the Informix On-line Server. Provide guidance and support to the group for efficient and maintainable designs on parallel systems.

  • Redesigned the entire CDR queuing mechanisms to improve reliability and performance, and added support for hierarchical routing to allow indirect passing of messages between systems without direct connections to one another. The new queue design also allowed for tracking of any specific transaction or data packet of a transaction from its source system to any destination system and on any intermediate systems in between.
  • Designed and implemented sparse CDR catalogs. Previously all servers participating in replication had to maintain the complete set of server, replicate, group, participant, and other configuration information for every other server. Now any server not acting as a network hub need only obtain and maintain information pertaining to itself.
  • Designed the floating thread mechanism whereby a small set of CDR communication threads can service a large number of server connections (the existing design required a dedicated set of threads per connection).
  • Led the design effort for adding mobile computing support to CDR.
  • Led the project to fully support a master/slave replication model on CDR, which was originally designed exclusively for update anywhere.
  • Led the project to automatically synchronize CDR internal catalogs and state information on servers starting CDR for the first time with an established CDR server.
  • Designed and implemented the Grouper component of CDR. The Grouper is a fully parallel module that evaluates rows from replicated tables within transactions, and assembles the replicated portions of the transactions into machine independent buffers for transmission to other servers. While assembling the replicated transactions, the Grouper intelligently removes redundant row records, and handles reordering of columns within a row on a per user-defined replication basis.
  • Designed, coded, and ran full stand-alone and integrated test suites for the Grouper module, which also served as a test bed for other CDR components.
  • Provided support modifications within the core server modules for required CDR functionality.
  • Provided technical advice on architectural, design and coding issues in the CDR group.
  • Modified of the parallel server to support replication, building the interface between the server and the parallel loader, and between the parallel loader and archive system (for the discrete data replication system).


April 1993 to August 1994 Chorus Systems, Beaverton, OR
Senior Software Engineer, Operating Systems Department

Responsible for development and maintenance of a distributed real-time operating system, CHORUS/Fusion, and designed. Implemented the source control and build mechanisms used throughout the Fusion project.

  • Ported a multi-threaded, distributed version of GNU GDB to Fusion, which required debugging and modification of the operating system.
  • Made various bug fixes and functionality enhancements to the operating system.


December 1991 to March 1993 Intel Corporation, Beaverton, OR
Senior Software Engineer, Supercomputer Division

Responsible for design, implementation, and maintenance of Intel's proprietary operating system (NX) for the Touchstone Delta Project, and for Intel's proprietary message passing mechanism in Mach for Intel's new generation of massively parallel supercomputers.

  • Designed and implemented portions of a message passing mechanism in Mach.
  • Designed and implemented a new node partition managing server and library routines for NX.


May 1990 to November 1991 Sequent Computer Systems, Beaverton, OR
Software Engineer, I/O Software Group

Responsible for design, implementation and maintenance of a wide variety of I/O device drivers (including STREAMS) for a parallel System V UNIX (Dynix PTX) running on symmetric parallel systems.

  • Helped design and implement a driver for a new high speed Quad Channel SCSI Controller, including on-line replacement of disk drives.
  • Designed and implemented the stand-alone driver for a new high speed Quad Channel SCSI Controller.
  • Designed and implemented a trace mechanism used for kernel debugging and error message logging. Also created the associated user daemon and utility programs.
  • Redesigned various terminal multiplexer drivers for POSIX compliance.
  • Improved and maintained the on-line and stand-alone SMD disk formatters for Dynix (BSD UNIX) and Dynix PTX.


December 1988 to May 1990 Tektronix, Wilsonville, OR
Software Engineer III, Interactive Technologies Division

Planned, scheduled and implemented custom software projects on a System V UNIX kernel (UTek V) for various organizations within the division.

  • Innovated changes to UTek V for VME device drivers.
  • Designed and implemented a STREAMS multiplexer/demultiplexer.
  • Designed and implemented a STREAMS graphic display, mouse, and keyboard module and interface.
  • Participated in on-going debugging of the kernel.
  • Resolved POSIX, SVID and M88000 BCS compliance issues.
  • Created a System V shared memory interface for a BSD UNIX kernel (UTek).
  • Ported System V message queues and semaphores to UTek.


March 1988 to December 1988 Control-C Software, Beaverton, OR
Software Engineer

Produced significant portions of a Postscript interpreter for laser printers and provided the development system (Sun workstations) support.

  • Designed and implemented memory management and packed array schemes.
  • Created grey-scale pattern generation routines.


June 1986 to March 1988 Tektronix, Wilsonville, OR
Software Engineer III, Workstation Division

Responsible for designing, implementing and maintaining portions of a BSD UNIX kernel (UTek) and porting the kernel to various workstations.

  • Designed, implemented and debugged portions of the kernel virtual memory handling code on an M68020 system.
  • Designed and wrote a DMA Centronics printer device driver.
  • Created the stand-alone monitor and utilities for a M68020 system.


February 1982 to June 1986 RCA Cylix Communications Network, Memphis, TN
Programmer/Analyst

Wrote programs that monitor, report and react to real-time events on a satellite data communications network. Provided kernel support for the BSD UNIX host and development systems.

  • Created a device driver for an asynchronous I/O multiplexer.
  • Overhauled the Network Control System software to achieve improved reliability, increased functionality, and a six-fold increase in transaction throughput.


May 1980 to February 1982 Memphis State University, Memphis, TN
Programmer/Analyst, University Computer Center

Provided support for Computer Center users, created the system interface to graphic plotters and terminals, and maintained graphics libraries. Produced test analysis programs used by university professors.


EDUCATION

B.S. (Geology), Memphis State University - now The University of Memphis
Earned the Outstanding Senior of the Year award for Geology in 1980.

Black-belt (2nd Dan) in Taekwon-Do and current student at the World Musado Federation.