Twenty years experience with system level software.|
Emphasis on networking, databases, compilers, and other systems-level technologies.
Expert C/Java and UNIX/Linux programming skills, competent on Windows
Experience managing both people and projects.
Team player with excellent written and verbal communication skills.
|Jul 2012||Software Dev Sr. Engineer|
|present||Dell Inc. (Kace organization)|
After transferring to the Kace organization, I got to know the K1000 (a systems management appliance), by building a system to emulate tens of thousands of clients. The system is still used to do resource planning, capacity testing, performance analysis.
Currently I'm working on a monitoring extension for the K1000. The monitoring agent (written in Python) provides a stream of system and application fault data to the K1000. We're building sophisticated probes to accurately identify problems with the top server applications (Exchange, Apache, SQL Server, etc...).
Environment: Python, PHP, Jenkins, Linux and Windows.
|Jul 2010||Software Dev Sr. Engineer|
|Jul 2012||Dell Inc. (acquisition)|
Sustaining work on AIM (see below), including performance analysis and scalability testing, with significant improvements to both. Continued development of new features including support for dedicated iSCSI networks.
|Nov 2003||Sr Software Engineer (and principal doer of things needing doing)|
|Jul 2010||Scalent Systems|
Senior developer of AIM (Advanced Infrastructure Manager). AIM provided data center agility by allowing workloads to be dynamically retargeted between physical and virtual servers and automatically provisioning the workload's network and storage (SAN/iSCSI) connections. The AIM controller was a large (1000+ classes) intensely multithreaded system capable of concurrently managing 1000s of clients.
Over a 7-year startup grind I was involved in all phases of product development from conception and design through implementation, testing and deployment, even contributed a bit to sales and support.
Wrote several high performance network services (DHCP, TFTP, etc...) primarily in Java with lower levels in C. Lots of experience with network protocol analysis and debugging.
Designed and implemented several methodologies for orchestrating the remote booting of images over Fibre Channel SAN, NFS, and iSCSI. Worked with hardware vendors to incorporate our technology into their standard offerings.
Adapted AIM to work work with various virtualization technologies. I did several iterations for versions of the Xen hypervisor and also worked on the VMware implementation. In addition to orchestrating the boot off central storage, needed to construct the layer-2 network connectivity from the VMs to outside networks.
Designed and built the development infrastructure, build system, continuous integration tools, and Linux installers. Integrated with OCFS2 DLM to create a failover scheme for the controller. Built a sophisticated hardware inventory tool from a busybox ramdisk.
Environment: Mostly Java, some C, and assorting scripting languages, Mainly Linux and Windows with forays into Solaris and AIX, occasional x86 real mode programming. VMWare, Xen, and Hyper-V hypervisors. P4, Clover, YourKit, FindBugs.
Traveled the world visiting more than 30 countries before settling in Thailand for three years. In Thailand kept busy by teaching scuba diving and managing dive shops. Certified approximately 250 students with over 900 dives logged.
|May 1997||Project Lead / QE Manager (simultaneous positions)|
|May 1998||Rational Software (via acquisition)|
Managed a group of three engineers producing Visual PureCoverage, a code coverage tool for C/C++, Visual Basic, and Java applications on MsWindows. Led the team through functional specification, GUI design, and product implementation. Worked closely with senior management, marketing, technical publications, and customer support to ensure we built the right product on the right schedule.
Managed a group of six quality engineers testing developer's tools for Windows (Purify, Visual PureCoverage, and Visual Quantify). Worked closely with all facets of the organization to establish and implement quality objectives and methodologies.
Responsible for priorities, scheduling, hiring, resource acquisition, and budget management of both groups.
Environment: MsWord, MsProject, Hyperion Pillar, HTML, PERL.
|Jun 1996||Staff Software Engineer|
|May 1997||Pure Atria (via merger)|
Designed, implemented, and supported the HTTP/SSL capture module for PurePerformix/CS. PurePerformix/CS was a client server/database load testing tool. The HTTP/SSL capture module used Pure Software's Object Code Insertion(OCI) technology to capture plain text scripts from encrypted web browser sessions. The scripts could then be edited, parameterized, and played back (with multiple instantiations) to load test a web server.
Environment: C on UNIX(Solaris).
Was promoted to be the project lead for a team of 5 designing and implementing PurePerformix/CS 2.0, a reimplementation of the product for MsWindows. Led the team through: Functional Specification, system architecture, GUI design, schedule approval, and 1/4 the implementation schedule before the projected was canceled due to a corporate merger.
Environment: Visual C++ on Windows NT.
|Dec 1993||Senior Software Engineer|
|Jun 1996||Pure Software|
Responsible for the design, implementation, and support of PureVision's instrumentation module. PureVision was a tool to monitor software usage during beta programs. Using Pure Software's OCI technology the instrumentation module took an executable and modified it to record information about feature usage and software crashes. Because PureVision was intended for late integration and remote deployment with unreliable beta software the quality and stability of the instrumentation module was extremely important.
Environment: C on UNIX(SunOS, Solaris, HP-UX).
|Aug 1991||Senior Software Engineer|
|Dec 1993||Zycad Corporation|
Responsible for the design, implementation, and support of the VIP loader. VIP software compiled high level VHDL designs for execution on the VIP hardware platform. The loader was responsible for flattening, relocating, and loading hierarchical VHDL designs. It was also responsible for the construction of complicated data structures used by the hardware. Additional responsibilities include providing UNIX expertise to the VIP team, serving as the GNU software liaison, contributing to the design and implementation of the Make/RCS system used on the project, and the design and implementation of a VHDL value/type representation module.
Environment: C on UNIX(SunOS), and special purpose hardware (up to 16 boards each containing four MIPS processors and three large Zycad designed ASICS all hosted under a Sun4).
|Mar 1990||Software Product Specialist|
|Aug 1991||Plexus Software Inc. (via acquisition)|
Provided back line support for the XDP product. Duties included: handling of escalated customer problems, representing customer support on product committees, providing expert level consulting services, and administration of alpha and beta programs. Led design and implementation of a tool set for diagnosis and repair of disk level database problems.
XDP was a SQL based image processing system. As a data-server XDP used an Informix Turbo based database kernel running on a UNIX platform. The DBMS software had been modified to support optical peripherals, large data objects, and full text searches. XDP also provided a GUI builder, 4GL, and runtime environment allowing developers to rapidly construct imaging applications to run under Microsoft Windows communicating with the data-server via sockets.
Environment: C/Informix Turbo internals on UNIX(SunOS), 4GL on Windows 3.1.
|Oct 1988||Software Support Analyst|
|Feb 1990||Plexus Computers Inc.|
Performed phone and on site "crisis" support for a worldwide base of Plexus XDP customers (end users, OEMs, and VARs.) Was responsible for assisting customers with all of their XDP needs, ranging from system design and configuration to developing workarounds and writing code for complicated problem analysis.
Environment: UNIX(Plexus hardware).
|June 1987||Co-op Student|
|May 1988||IBM's Hawthorne research lab|
Worked with two staff members on an automatic vectorizing and multiprocessing APL compiler. Designed and implemented most of the code generation functions in the back-end. Did work on such optimizations as loop combining, strength reduction, progressional index vectors, and register allocation.
Environment: 370 Assembler and APL on IBM 3090 mainframes.
|7814274||2010-10-12||Method and system for dynamic binding in a storage area network|
|7574491||2009-08-11||Virtual data center for network resource management|
|6634001||2003-10-14||Remote monitoring of computer programs|
|Columbia College of Columbia University Bachelor of Arts Conferred May, 1988|
|Major: Computer Science; Cumulative GPA: 3.3; Computer Science GPA: 3.8|
|Columbia College Dean's List: 4 semesters 1984-1988|
Native English speaker. |
Speak conversational Thai with basic reading and writing skills.
|Travel, Rock Climbing, Scuba Diving, Cats, Bicycling, Reading, Movies, Ethnic Foods.|