Experience
|
- 2006 July - Present:
Principal Software Engineer at Mozy
- Helped create Mozy's scalable backend system
responsible for storing and managing dozens of petabytes
of data in multiple datacenters. Contributed to
development of original system, written in Python (2006
- joined when there was only one other developer on
this project), and played major role in
rewrite/redesign in C/C++ for performance and scaling
(2007-present). Helped design and implement novel
distributed system technologies, including
single-instance-storage, bloom filters, reed-solomon
erasure coding, bitrot detection, etc.
- Created new backend web-restore engine, which
services customer requests for restoring files. Sole
developer and architect for most of this project, later
led a small international team in finishing and
maintaining [C/C++/Boost/Asynchronous]
|
- 2004 October - 2006 July:
Software developer at Novell.
- Designed and implementated tools to help Novell
customers migrate from NetWare to Novell's newer Linux
offerings. [ruby, python, expect, C]
- Helped a moderate-sized team create enterprise
software used by Novell customers to the Linux
platform, producing Novell
Branch Office 9. Contributed input to
suggested architectural changes planned as part of the
rewrite, and produced software deliverables as part of
the development team. [C/C++]
|
- 2004 December - 2005 May:
Consultant for MIT's Lincoln Laboratory,
continuing software development and research work on
airborne networking and link emulation. [C++]
|
- 2001 October - 2004 October:
Associate Staff at MIT
Lincoln Laboratory. Software development, system
architecture, and systems research as part of the Advanced
Networks and Applications Group.
- Researched topics in mobile ad-hoc wireless networks
composed of airborne nodes and worked with a team to
develop prototype network control application for
heterogeneous collections of mobile wireless
datalinks. Designed many components of the software
architecture and wrote large portions of the more than
65,000 lines of C++ code. Responsibilities included
coordinating development of a single code base to be
used in both a laboratoy environment with emulated
data links and a live environment aboard a Boeing
707 aircraft with real data links and network
equipment. [C/C++, Java, Automake, Autoconf, SVG,
TCP/IP Socket Programming, Cisco IOS].
- Assisted in the development of network testbeds for
airborne networks and next generation
satellite/terrestrial backbone networks. Conducted
experiments on the testbeds and built tools to assist
in that task. Compared performance of several
strategies for improving connectivity and throughput of
highly-mobile networks. Evaluated utility of different
strategies to use multiple links on a platform to
provide a single virtual connection. [C/C++, scripting]
- Created "Lincoln Link Emulator," a link-layer
emulation tool capable of emulating the bit error rate,
latency, and throughput limitations of different types
of links. The tool is transparent to
systems-under-test and capable of near line-rate at
gigabit speeds. [Linux, C/C++, network-layer
programming]
- Integrated (including creation of custom software),
operated, and analyzed the performance of a Tactical
Common Data Link (TCDL) system onboard the Laboratory's
Boeing 707 experimental aircraft. Participated in
excercises and experiments with this MC2A-x platform
(see Aviation Week & Space Technology,
Sep. 23, 2002). [C/C++, shell scripting, Matlab,
Gnuplot]
- Created software to acquire and synchronize data
acquisition streams from multiple cameras
simultaneously as part of research into machine
vision. [C/C++, Java]
|
- 2001 February - 2001 September: Application
Server Software Developer for iCentris. Worked on a team of
developers to create ProviderPay,
a web-based financial application for physicians which
provides billing services, claims adjudication, and claims
payment advances. [J2EE, Java, SQL (Oracle and Postgres), JDBC,
EJB, XML]
- Wrote server-side processing code (EJBs) and
client-side JSPs.
- Interfaced with legacy mainframe systems via
COBOL-style flat files and EDIs. Wrote custom
interface code.
- Installed and administered BEA Weblogic
application server, Oracle database, and Bugzilla
bug-tracking systems.
|
- 1996 November - 2001 January: Research
Assistant for the Performance
Evaluation Laboratory (http://pel.cs.byu.edu/) at
Brigham Young University.
- Researched disk I/O performance improvements through
detection of determinism in access data.
- Assisted in research related to processor address trace
collection. Wrote Seize
(http://traces.byu.edu/new/Tools/seize.html)
for the Linux Kernel, a device driver for halting and
unhalting a machine externally.
- Created WebBeater, a web server stressing
tool for performance studies.
- Developed the web sites for:
- Performed system administration tasks for Linux,
Windows 9x/NT, Solaris, and HPUX machines.
- Wrote UintaApplet to aid students of a
computer architecture course to complete a simulator for
the Uinta computer architecture.
- Helped develop web sites, tutorials, and instructions
for an "Introduction to Computer Organization" course.
|