Summary
Unix systems programmer/admin with broad scientific and philosophical/current-events literacy looking for interesting systems problems, scientific research opportunities, or other work that benefits humanity.
Employment History
- SRE at Dropbox (Bedrock Team)
Dec 2015-Current
This was primarily an architecture refactoring role with moderate and varied programming. I was a Platform Engineer on the Bedrock Team, which is responsible for operating system definition and bootstrap, machine allocation, apt repos, config management, machine classification and allocation, and software distribution. I was heavily involved in defining the OS standards, CM standards,and wrote and refactored a lot of code that prepares an OS for our software stack. I also designed and coded our system for managing apt repos.
Technologies used: Ubuntu, Python, Shell, Chef, Puppet, Ruby, AWS, cgroups
- Sr Systems Engineer for MongoDB
May 2014-Dec 2015 (in April 2015, I became the most senior person on the team)
This was primarily a systems administration role with moderate and varied programming. I developed deep expertise on the Atlassian software stack as well as Chef, wrote a fair amount of code to handle scaling problems with available tools, debugged code, handled operational concerns, and liased with other teams while documenting and developing best practices. After hours I had side projects for other teams in the company, where I wrote a diagnostic tool for our support team and contributed code for one of our storage engines (WiredTiger). I worked hard to modernise our infrastructure.
Technologies used: AWS, Chef, Linux, MongoDB, Jira/Crowd, Java, Perl, Python, Ruby, MySQL, Go, Powershell, Docker
- Systems Engineer for Spotflux
May 2013-March 2014
This was primarily an architecture research role with some systems administration and some programming. I joined to improve scalability for the software stacks we were using on our servers, tuning the kernel and network stack and evaluating and writing userland software. Outside of this, I participated more broadly in systems administration: capacity planning, doing machine room work, and writing puppet recipes. I also wrote tools to parse and automatically diagnose error logs we received from client software. I brought a number of new technologies into the company.
Technologies used: Ganeti, Linux, OpenVPN, IPTables, Perl, Python, C, LUA, OpenVPN, Zabbix, nginx, HAProxy, Puppet, FreeBSD
- Freelance Teacher
Teaching Perl and Python, C, Unix Internals, SQL in small informal settings.
- Part-time Systems Administrator for VMac
Feb 2012-Aug 2012
Part-time Unix Systems Administrator. Performed maintenance and configuration of sytems.
- Part-time remote Systems Administrator for Carnegie Mellon University(Psychology Department, John Anderson's ACT-R Group)
(September 2011-July 2013)
Part-time remote Unix Systems Administrator. Remotely maintaining servers, assisting users with services and development.
- Principal Research Programmer for Carnegie Mellon University (CS Department, David Andersen/Peter Steenkiste - CMCL Lab)
September 2008 - July 2011
In this position, I did local software development on Emulab (network testbed software, similar to EC2), presented my work at networking conferences, and administered our local Emulab deployment and trained users on its use. I also specced and built the machine room for the research lab this research was in, and administered the systems in it. This position was primarily software development with systems administration as needed, but the software developed automated many systems administration tasks. My extensions to Emulab included extensions to the event system, automatic allocation/management of OpenVPN instances, extension of the primarily in-rack management model to external systems in private residences, and API extensions for automation of cross-testbed federation. This position also involved training grad students and assisting with their research.
Technologies used: Perl, Python, C, PHP, MySQL, OpenVPN, Apache, MediaWiki, GIT, SVN, CVS, FreeBSD, Linux, Cisco IOS, VMWare ESX
- Researcher/Systems Administrator for Carnegie Mellon University (Psychology Department, John Anderson's ACT-R Group)
August 2004 - January 2008 (continued to present on limited contract basis)
In this position, I did fMRI-based neuropsychology research on the neurological basis of insight and the role of memory in this task. I designed stimuli, participated in experimental design, conducted experiments, and did analysis of results. This position was about half neuropsychology research, half computer work, with the majority of the computer work being systems administration (software evaluations for our analysis stream, built a machine room and a cluster for analysis, database and web design, etc) with some amount of software development.
Technologies used: Linux (servers), PostgreSQL, Perl, E-Prime (Programming language for Psychology Experiments), Apache, MediaWiki, Matlab, MacOS and Windows (supporting desktops), CVS/Subversion, Photoshop (writing extension in Javascript)
- Research Programmer for Carnegie Mellon University (CS Dept, Auton Group)
Sept 2002 - August 2004 (1 year, 11 months)
In this position, I primarily did software development with a much smaller amount of systems administration for a large research group (about 30 people). The software development was a mix of C (extensions to our primary codebase, a lot of refactoring), Perl (automation, prototyping, database and web work), and Java (several applications). I wrote code that automatically built R and Matlab bindings to applications written in our frameworks.
Technologies used: Linux and OpenBSD (servers), PostgreSQL, C, Perl, Java, R, Matlab, Mathematica, Apache (CGI and mod_perl), CVS, Nagios
- Systems Administrator for GoAntiques
April 2002 - August 2002 (5 months)
In this position, I primarily did systems administration on our production systems, offering some assistance to developers and doing some light programming.
Technologies used: Linux, Solaris, DB/2, Perl, Apache, CVS
- Software Developer/Systems Administrator for McLeod and Associates Ltd.
November 2001 - April 2002 (5 months)
In this position, I did an even mix of software development and systems administration. I did large-scale code cleanups of our codebase in C that controlled Dialogic boards, and did some database work (Oracle) that supported that. I migrated our development from RCS to CVS and otherwise modernised our development environment. My systems administration work had me maintaining our software stack and underlying hardware in machine rooms (across the country at client locations) running some mix of SCO Unixware, OpenServer, and Linux.
Technologies used: Solaris, Linux, SCO Unixware, SCO Openserver (servers), C, Java, Perl, Dialogic boards, Oracle, RCS/CVS
- Student Research Programmer for The Ohio State University (CS Department, LAIR AI Lab, B Chandrasekaran/Josephson)
October 1998 - October 2000 (2 years)
Designed (partially), implemented, and documented a crossplatform system for distributed computation in Perl on Unix and Windows. This software was similar to more modern frameworks like MapReduce
- Student Programmer for The Ohio State University (Networking Group)
February 1998 - August 1998 (6 months)
Assembled servers, installed/configured NetBSD/FreeBSD on them. Wrote software to analyze BIND logs, various other tasks. Technologies used: NetBSD and FreeBSD, Perl, C
- Student Unix Support Eng for The Ohio State University (Unix Workstation Support Group)
June 1997 to July 1998 (1 year, 1 month)
Provided phone and on-site support for Solaris, HP/UX, Digital Unix, IRIX, some other Unices, Windows NT. Installation and hardening of these operating systems on servers and workstations. Hardware troubleshooting
- Student Support Eng for The Ohio State University (UTS Technology Support Center)
October 1996 to Feb 1998 (1 year, 4 months)
Provided technical support for Windows, MacOS, and internet software running under each. Trained staff, wrote new technical guides, wrote software to improve mailspool maintenance (Perl/Tk)
Volunteer/Other Work
- Opensource developer/project participant
Sole developer of BLOG/Wiki software, email software, Usenet moderation software. Involvement in projects with various other developers, past and present, including Mozilla, XFree86
- BIRC Neuroimaging Centre (paid contract work)
February 2006-June 2006
Worked on report system for scan reservations for website, implemented basis of next generation database-driven website.
- Wikipedia
December 2002 - January 2007
Contributor to articles and policy, Mediation Committee, various other policy/working groups
- Pernangband Project
May 2001 - May 2002
Part of the development group for the game PernAngband (Unix/C).
- NoWonder Project
May 1997 - November 1999
Led the OS/2 and Unix teams in providing free technical support over the web. Also part of the Systems Administration team for server (running Linux/Apache/ircd) the project ran on.
- Usenet
August 1996 - 2004
Moderated seven newsgroups. Wrote software to perform Usenet moderation, and participated in Usenet moderation community.
Education
- Carnegie-Mellon University
August 2003-July 2011
Non-degree student, took classes that include neuropsychology, psychology research methods, bioinformatics, and philosophy
- Ohio State University
August 1996 - March 2001
B.S. Computer Science (Systems focus), minor Political Science (Political Theory focus)
Skills
Software and Systems
- Extensive experience with a variety of Unices, including Linux
- Configuration management and systems automation software, such as Chef, Puppet, and Emulab
- Software development: Perl (Object Oriented), C, Java, Python, Go, Javascript, R, Matlab, Mathematica
- Databases (MongoDB, Redis, Oracle, PostgreSQL, DB/2, MySQL, SQLite)
- Design/maintenance of web applications (mod_perl and CGI, some development on Tomcat). Hand-coding of HTML, CSS.
- Interest in knowing the full software stack from kernel-space to high-level APIs
- Development tools: cvs/svn/git, Tinderbox, Bugzilla, gdb
- Experience with code refactoring/maintenance, cleanup, documentation
- Computer networking and network programming (primarily IP-based networking, some IPX), Cisco IOS, network security/analysis/troubleshooting/design, common servers (BIND, Apache, Sendmail, Samba, NFS/NIS, etc). Includes penetration analysis and security for such services
- Strong knowledge of open source development practices, software
- Experience with other operating systems: Windows, MacOS, OS/2, VMS
- Machine room design/use (speccing power/cooling requirements, rack installation, wiring)
Other
- Spoken Languages: some German and Spanish, limited exposure to French, Japanese, Hebrew and Russian
- Psychology research: Writing papers, experimental design and analysis, Human Subjects training, MRI safety
- Writing documentation, organising information
- Training others on tools and concepts
Interests
- Advancing human knowledge
- Bioinformatics
- Cognitive Science and Neuropsychology, particularly transfer of knowledge across different problem domains
- Philosophy: Morality, Governance
- World-current-events, history, conflict and its resolution, national development, policy
- Large-scale Systems Programming, operating systems internals, distributed/fault-tolerant computing
- Teaching