Leonard J. Bottleman
Leonard Bottleman
Prineville, OR 97754
*******@***********.***
February 13, 2012
OBJECTIVE A responsible position emphasizing
software design and implementation.
SKILLSVery 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.Working use of Java, Perl and Python.EXPERIENCE
January 2006 to present
Oracle Corporation, Portland, OR
Consulting Member of Technical Staff, Oracle Applications Server
Member of the Exalogic Middle Ware Development team.
Redesigned and re-implemented the Exalogic Control (ECU) domU network
scripts to configure Infiniband interfaces (IPoIB and EoIB) and
bonds.Extended the Oracle Notification Service (ONS) C and Java clients to
support a set of ONS server pools to which they established connections, which
included connection status monitoring, and pool fail over when an existing pool
was detected as down or unreachable.Lead the project to integrate the Oracle Process Manager and Notification
(OPMN) and ONS into a single common code base.Designed and implemented the ONS RPC mechanism used for managing many
components managed by OPMN and used to deliver process specific DMS metrics
from all components to the Enterprise Manager.Lead the project to integrate the (OPMN) into the the 11g web tier product
stack.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 (DMS) to provide better performance and new functionality.Instrumented Oracle's version of Apache (OHS) 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.Create Apache module for integration with the ONS and OPMN.
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 OPMN component -- 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
Earned the Outstanding Senior of the Year award for Geology in 1980.
Black-belt (2nd Dan) in Taekwon-Do at the
.