Summary:
Experience:
Red Hat., Westford, Massachusetts —
Feb 2011 to present
Title: Senior Manager, Senior Principal Software Engineer; task: Manager
and software developer, Red Hat Ceph Storage (RHCS), Ceph, Red Hat Gluster
Storage (RHGS), GlusterFS
Part of an international team developing Red Hat Ceph Storage (RHCS) and Red Hat Gluster Storage (RGHS), products based on Ceph and GlusterFS open source projects. Ceph and GlusterFS and Ceph are scale out software defined storage solutions.
Part of the team developing Ceph's Rados Gateway (RGW) Object Storage, adding pluggable backend support for various alternative storage systems, in addition to Ceph, including databases, and partners' propietary storage products.
Team Lead of the six-plus person working on the NFS-Ganesha NFS server. Ganesha is a NFS Server that runs in user space that is used to provide NFS access to Gluster storage vi the Gluster GFAPI library. Lead the team in developing new features, maintenance, and assisting with customer support escalations. Implemented the High Availability feature for Ganesha using Pacemaker and Corosync. Currently rewriting High Availability feature to use CTDB. Producing Ganesha packages for the product. Coordinate with QE team on testing and Ceph engineering. Modifed Ganesha to run as non-root. Modified Ganesha to build as a DSO (shared library) for better link semantics required by cutting edge Linux distributions.
Initated conversion of the Python code in Gluster to Python3 in preparation for Fedora switching to Python3 as the default.
Implemented versioned symbols in the GlusterFS "api" (GFAPI) shared library to preserve ABI compatibility across multiple versions of GlusterFS.
Package maintainer of GlusterFS, Ceph, NFS-Ganesha, and several related packages in Fedora. Co-maintainer of the GlusterFS packages in the CentOS Storage SIG. Build GlusterFS, NFS-Ganesha, and assorted other "community packages" for Fedora, RHEL/CentOS, Debian/Ubuntu and SUSE/OpenSUSE that aredistributed from Gluster's download site, Ubuntu Launchpad, and OpenSUSE Build Service (OBS).
Set up automated runs of Coverity scan, cppcheck, LLVM clang compile and clang analyze, and other checkers doing daily analyses of all the active development branches of GlusterFS and NFS-Ganesha.
Presentations on developing xlators, Ganesha HA implementation, and other topics at LinuxCon Gluster Workshops, LinuxCon Vault, Red Hat DevConf.cz, open source symposiums at NITTE University in India, and Gluster Summit conferences.
Part of the two man team that developed HekaFS (nee CloudFS), a storage platform based on GlusterFS with multi-tenancy features suitable for storage in the cloud. Developed a uid/gid remapping xlator, and worked on the web-based HekaFS configuration GUI. After the acquisition of Gluster, Inc., refactored part of the GlusterFS internals as a foundation for incorporating HekaFS multi-tenancy functionality into GlusterFS.
EMC2, Hopkinton, Massachusetts —
June 2004 to Feb 2011
Title: Consultant Software Engineer; task: Architect, advanced software
development, Centera, Celerra, Atmos.
Part of an international team developing software for the current and next
generation Centera and Celerra products. Designed and implemented a location
service for positioning and retrieving files across multiple drives through
time. Migrated 32-bit implementations to 64-bit. Revampled the build/make
environment. Implemented RPM packaging, init.d scripts, unit tests using the
CppUnit utility, introduced valgrind as a tool for dynamic testing of resource
utilization. Evaluated Coverity Prevent and Fortify at the corporate level
for static code analysis of C, C++, and Java. Designed and implemented a
file system iteration daemon/server that allows multiple applications to
share the results with associated applications. Packaged a SuSE Linux
appliance (VM) for VMware for a corporate-wide programming competion to
promote Centera's XAM functionality. Set up and maintained the corporate
SLES 10 Update Proxy (YUP) for SLES10 updates. Evaluated concurrency issues
in Centera and made architectural recommendations to improve system
throughput. Reviewing Centera sources and suggesting improved software
patterns to reduce overall memory usage. Worked with current and prospective
partners to develop a framework for integrating their solutions for
extracting metadata from Centera systems.
Sun Microsystems, Burlington, Massachusetts —
March 2004 to May 2004
Title: Senior Principal Software Engineer; task: software developer.
Responsible for porting Sun's Patch Manager product from Solaris to Linux.
Patch Manager analyses available lists of patches available from Sun and
makes recommendations about which patches to apply to a customer's system.
The majority of the software is written in Java, with some C and C++.
Shiman Associates, Inc., Brookline, Massachusetts; consultant
The Open Group —
November 2003 to February 2004
Title: Senior Software Developer; task: software developer.
Responsible for boot-strapping X.org's open source Public Implementation of
X11.
Established the new source repository in CVS for the members. Forward-ported
the sources on several platforms including Linux, Solaris, AIX, Mac OS X,
FreeBSD, and Microsoft Windows. Installed and ran the VSW5 regression tests
against the binaries built from the sources. Fixed build issues, e.g., added
version resources to DLLs, for the Media Application Server (MAS) on Microsoft
Windows platforms.
Oryxa, Inc., Waltham, Massachusetts —
January 2002 to September 2003
Title: Principal Architect; task: software developer.
Responsible for design and implementation of a distributed component-based
storage framework that would allow third-party software components to be
added to storage devices. This system was intended to be a standard platform
that allows storage administrators to configure components such as mirrors,
point-in-time duplicators, etc., into running storage devices to suit their
needs.
Implemented the initial version of the framework in Java using the Sun CORBA
implementation and later the OpenORB CORBA implemention. Implemented a
lightweight resolver for obtaining initial CORBA references using the
portmapper rather than a hard-coded port address; this functionality was
written in pure Java rather than using JNI and the C library portmapper
functions. Implemented a built-in memory and object profiler using the JVMDI
services allowing for "real-time" retrieval of JVM statistics from the
running program. Maintained and enhanced Linux kernel module used to
interface with the Linux file system. Wrote a JavaCUP/JFlex (yacc/lex) parser
to generate Java classes from the IDL compiler generated Java interfaces;
these Java classes were used to isolate components from their children to
strictly enforce the interfaces that they could use. Designed and implemented
self-healing network connection fault detection and recovery subsystems.
Developed a kernel module device driver to provide SCSI HBA and target device
support for a third-party Fibre Channel card. Analyzed performance and
memory utilization using third-party Java tools and fixed memory leaks and
performance bottlenecks.
InfoLibria, Inc., Waltham, Massachusetts —
July 2000 to January 2002
Title: Principal Software Engineer; task: software developer.
Systems Team. Responsible for ongoing development and porting of the
operating system and Apache-based web server/cache/proxy for a web cache
appliance. The appliance initially used BSD/OS 3.x for the operating system.
Ported the kernel mods, pthreads library mods, and Apache httpd mods from
BSD/OS to FreeBSD. Modified bootstrap loader, system installation, and other
components for use in an appliance. Analyzed the pthreads library using gprof
for performance and fixed performance bottlenecks. Implemented the
engineering-level build/release process for eventual turnover to release
engineering group. Developed an install CD-ROM for legacy BSD/OS 3.x-based
product that had previously been a floppy-only install.
Was later responsible for maintenance and new development in Java for the
scheduling user interface for a streaming media server appliance.
Additional Accomplishments: Began implementation of a new open source
operating system for i386 and Alpha-based PCs derived from FreeBSD.
Integrated Computer Solutions/Winston Technologies, Cambridge, Massachusetts —
July 1998 to July 2000
Title: Principal Software Engineer; task: software developer.
PopupNotes.com Team. Responsible for ongoing development of an
internet-based web page annotation system that allowed people to attach
PostIt Note®-like annotations on web pages in much the same way they would
attach a real PostIt Note® on a document, and optionally share their
annotations with coworkers and friends.
Primary contributor to the design of a distributed N-tier system using
an Oracle back-end, a farm of web servers, and software components in the
user's desktop computer. Implemented the client-side cache and stand-alone
UI component used to manage notes the user had written or encountered while
surfing the web. Contributed to the development of the Internet Explorer
Browser Helper Object that was responsible for displaying notes on web pages
the user visited.
Additional Accomplishments: Wrote filtering utilities using the COM
components included in Microsoft Word to allow batch conversion of
Microsoft Word documents into html files.
The Open Group, Inc (formerly the Open Software Foundation)
X Consortium, Inc.
Massachusetts Institute of Technology, Cambridge, Massachusetts —
May 1993 to June 1998
Title: Architect, X Window System; task: lead software developer.
X Project Team. Responsible for ongoing development of the X Window
System.
At The Open Group, implemented functionality to reduce colormap flash on
8-bit displays by mapping color cells in new color maps in the same location
as the root colormap. Proposed potential new features to members – and
lobbied for their adoption – including enhanced security, better Unicode
support, and network audio. Developed an X-Server native method for Java.
Maintained the implementation. Supervised and mentored several junior
developers.
At the X Consortium was principal contributor to the Remote Execution (RX)
functionality, a combination of the X AppGroup extension, a Netscape plug-in,
a new RX MIME type, and some minimal html that allow the remote execution of
applications "embedded" within a Netscape browser. Reviewed, integrated, and
enhanced multi-thread support in the R6 Xt library. Designed and implemented
safe signal handling in the R6 Xt library.
Additional Accomplishments: Wrote a poll system call for FreeBSD.
Wrote an inetd-based server to provide images from my desktop SGI INDY's
IndyCam to the X Consortium's public web server.
Contract Software Service, Pasadena, California;
consultant/contractor, NASA Jet Propulsion Laboratory —
May 1987 to May 1993
Title: Senior Software Engineer; task: software developer, architect.
NSCAT SDPS Project. The NSCAT SDPS project was a three tier
distributed system used to produce scientific data from satellite instrument
data. Was the principal contributor to the design and implementation of
the user interface prototype using OSF/Motif on Sun/Solaris.
NOCC-RT Project. The NOCC-RT was a three tier distributed system used
to monitor and control JPL's Ground Data Systems.
Principal developer of a client-server architecture for use within the UI
component. Designed the protocol for communication between the server and
the various display clients. Developed a library of routines for client
applications to retrieve data from the UI's server, including protocol
marshaling, 64-bit arithmetic, and Pascal-style sets. Designed and
implemented the near-real-time status display application. Participated in
the development of real-time status display clients. Participated in the
design and implementation of an M4, yacc, and lex compiler and a language
for describing display formats.
NOCC-RT Additional Accomplishments: Modified the MIT Sample X
Server to support multiple screens on Sun workstations. Developed a 3D
Motif-like version of Athena widgets (Xaw3d).
WInGS Project The Wing Integration for Global Support project was
primarily intended to determine the suitability of PCs for automating
various activities on an Air Force base.
Developed an application to update a remote database based on updates
to the central distributed database. Developed various components for the
user interface.
Litton Data Systems Division, Van Nuys, California —
May 1983 to May 1987
Title: Member, Technical Staff; task: software developer, QA unit and
integration testing.
DCT-APD Project, System Test and Integration. Responsible for System
Level Integration and Unit Test on a Z80-based handheld communications
computer system for the USMC.
NICS-TARE Project, System Test and Integration. Responsible for
System Level Integration and Unit Test on a Telex-type communications
system for NATO.
Patents:
Conversion of Content, 8489559
Managing distributed storage quotas, 9201896
Education:
California State University, Northridge
Business Administration, Management Information Systems
Brandeis University, Rabb School
Pursuing a Masters in Software Engineering
Other:
U.S. Citizen. Eagle Scout, Wood Badge
References on request.