Computer Skills: |
Hardware Architectures: Intel x86, x86-64 (amd64), RISC-V
Operating Systems: FreeBSD, Mac OS X
Programming Languages: C, C++, x86 and x86-64
Assembly, RISC-V Assembly, Python, Bourne Shell, C Shell,
Awk, Sed
Markup Languages: Markdown, HTML, LaTeX, XML
Development Tools: Emacs, GDB, Subversion, git, cscope
|
Work Experience: |
Consultant, SRI International, Palo Alto, CA
September 2016 - Present
- Added support for the FreeBSD MIPS, Aarch64, and
RISC-V architectures to upstream GDB.
- Rudimentary support for debugging of CHERI-MIPS,
CHERI-RISC-V, and Morello binaries via gdb.
- Lead the bringup of CheriBSD on CHERI-RISC-V including
hybrid and purecap kernel support.
- Sketched an application of CHERI to the x86-64
architecture.
Consultant, Netflix, Inc., Los Gatos, CA
July 2016 - Present
- Ported the mdb debugger to run on FreeBSD. Supports
debugging live FreeBSD kernels and FreeBSD kernel
crashdumps but not FreeBSD user processes.
- Changed FreeBSD i386 and amd64 architectures to enable
thread and interrupt scheduling on secondary processors
earlier in boot.
- Merged support for kernel TLS transmit offload derived
from internal patches to the public FreeBSD tree.
- Merged support for kernel TLS transmit offload on
FreeBSD into OpenSSL.
Consultant, Chelsio Communications, Inc., Sunnyvale, CA
November 2014 - Present
- Extended POSIX asynchronous I/O support zero-copy send
and receive for offloaded TCP connections in Chelsio
T4/T5/T6 NICs.
- Wrote driver to support the cryptography accelerator
on Chelsio T6 NICs.
- Implemented support for kernel TLS offload via the TOE
on Chelsio T6 NICs.
- Implemented support for kernel TLS offload for non-TOE
TCP connections on Chelsio T6 NICs.
- Implemented support for kernel TLS receive offload.
- Implemented support for kernel TLS receive offload on
FreeBSD in OpenSSL.
Member, Ararat River Consulting, LLC, Concord, CA
July 2014 - Present
- Expanded debugging support for XSAVE including saving
state in core dumps and adding XSAVE support for FreeBSD
to gdb.
- Added support for fork following on FreeBSD to gdb
using ptrace().
- Added native FreeBSD thread support to upstream
gdb.
- Ported kgdb from GDB 6.1 to modern GDB. Expanded
libkvm to support cross debugging of crashdumps.
- Added support for the FreeBSD ARM architectures to
upstream GDB.
- Added support for examining TLS variables on FreeBSD
to upstream GDB.
Consultant, Intel Ireland Ltd, Ireland
December 2015 - September 2017
- Assisted with porting the Intel QuickAssist driver for
Linux to FreeBSD.
Software Engineer, Hudson River Trading, New York, NY
January 2009 - December 2014
- Implemented kernel bypass for Chelsio T3 NICs.
- Assisted with implementation of kernel bypass for
Chelsio T4/T5 NICs.
- Maintained an internal distribution of FreeBSD using
Subversion and svk.
- Implemented initial NUMA support for FreeBSD.
- Added kernel APIs to FreeBSD to support the 64-bit
Nvidia GPU driver
- Reworked resource management in FreeBSD's PCI bus
drivers including bus number management and the ability
to grow I/O windows in PCI-PCI bridges.
- Added support for catching and logging machine check
exceptions to FreeBSD's kernel.
- Ported support for threads on FreeBSD from the
in-tree GDB 6.1 to GDB 7 in ports.
Senior Technical Yahoo!, Yahoo!, Atlanta, GA
May 2006 - December 2008
- Wrote monitoring daemons and RAID management utilities for
the LSI MPT-Fusion HBA and LSI MegaRAID SAS controllers.
- Added support for booting FreeBSD from GPT-labelled
disks directly from the BIOS (as opposed to booting from
EFI).
- Implemented support for PCI Message Signalled
Interrupts in FreeBSD's PCI bus driver.
- Extended kgdb to better integrate with gdb, including
native handling for kernel module symbols.
- Provided general support for OS issues on FreeBSD
including analyzing kernel crashes and deadlocks and
also analyzing userland issues such as run time linker
bugs.
Senior Software Engineer, The Weather Channel, Atlanta, GA
November 2001 - May 2006
- Ported simple device driver from Linux to FreeBSD and
Windows XP (WDM);
- Ported device driver for Video I/O board from FreeBSD to
Mac OS X.
- Backported simple ACPI support to FreeBSD 4.x to
support soft power-off.
- Continued work on multithreading the FreeBSD kernel:
- Added a per-thread reference to user credentials
to avoid locking and avoid race conditions with
permission checks.
- Implemented turnstiles with priority propogation
and reader/writer locks.
- Rewrote most of the x86-specific interrupt handling
code to allow runtime selection of interrupt
controllers. Also, implemented PCI interrupt routing
across PCI-PCI bridges using $PIR and PCI interrupt
routing using ACPI.
- Appointed as FreeBSD SMP technical lead;
- Elected to serve on FreeBSD governing board.
Senior Engineer, Wind River Systems, Inc., Alameda, CA
May 2001 - November 2001
- Continued work on multithreading the FreeBSD kernel;
- Extended the Witness debugging facility to handle lock
upgrades and downgrades;
- Converted the ktrace debugging facility to use a
kernel thread to write to its backing file to avoid
locking problems;
- Made the FreeBSD kernel fully preemptive.
Systems Programmer, Berkeley Software Design, Inc., Concord, CA
June 2000 - May 2001
- Improved support for EDD BIOS support in the x86
bootstrap needed for hard drives larger than 8.4 GB.
- Worked as one of the primary engineers on the FreeBSD
SMP next generation project:
- Converted low-level interrupt vectors to interrupt
threads;
- Extended the atomic operation kernel API to allow
for memory barriers in a manner consistent for the
x86, Alpha, and IA-64 architectures;
- Reworked the mutex code inherited from BSD/OS to
be fully machine independent and to depend on the
expanded atomic operation API for its machine
dependent bits;
- Split the software interrupt code from hardware
interrupts and made it completely machine independent;
and
- Extended the Witness lock debugging facility to
perform checks on shared/exclusive locks in addition
to mutexes.
- Assisted in implementing low-level support for SMP on
Alpha systems.
Lab Administrator, Virginia Tech, Blacksburg, VA
August 1998 - May 2000
- Administered over 40 machines in the CS undergraduate
lab running FreeBSD and Tru64 UNIX.
- Implemented a server/client remote cloning system
using PicoBSD.
Summer Intern, Fuentez Systems Concepts, Inc., Martinsburg, WV
May 1999 - August 1999
- Rewrote all of the makefiles, centralizing the
definition of default rules and options. This new
system also allowed all internal software to be
recompiled with a single make command.
- Designed and implemented a system that allowed the
Automated Mutual-assistance VEssel Rescue (AMVER) system
to receive messages from ships directly over
e-mail.
Summer Intern, Gilbarco, Inc., Greensboro, NC
May 1998 - August 1998
- Wrote shell scripts to automate tedious system
administrator tasks under SCO Openserver.
- Developed a web-based database of problem reports
searchable and maintainable via CGI scripts.
|