9 | | |
10 | | == Technical Experience == |
11 | | Launched a business using Django and Python.[[BR]] |
12 | | Deployed a Jenkins-based virtualized continuous integration system in a complex environment.[[BR]] |
13 | | Implemented tools and libraries for managing storage arrays, provided platform-level support for development team.[[BR]] |
14 | | Developed Mercurial-based promotion engine for software development.[[BR]] |
15 | | Reverse-engineered legacy security code to recreate missing source code, identified fatal security flaws, created a new security design, and evolved the implementation toward that design.[[BR]] |
16 | | Added workflow capabilities to Trac, and gained trunk commit privileges in 2007.[[BR]] |
17 | | Brought source control (Subversion), bug tracking (Trac), build processes (!BuildBot) and automated tools to a chaotic development environment.[[BR]] |
18 | | Ported the iop321 XScale sub-architecture support from Linux 2.4 to Linux 2.5, merged into Russell King's tree (2.5.65-rmk1, 2.5.70-rmk1), and Linus's tree (2.5.62, 2.5.64, 2.5.68, 2.5.69).[[BR]] |
19 | | Worked on four x86-based boards and seven ARM/XScale-based boards, from initial bring-up through deployment, including an upgrade to a new generation platform.[[BR]] |
20 | | Linux kernel experience includes initial bring-up on new ARM/XScale boards; implementing a network driver, file-systems, flash block device driver, numerous character device drivers; and modifying existing drivers.[[BR]] |
21 | | Designed and implemented the build systems for the Linux distribution running on those boards, documented build and release procedures for the Software Configuration Management (SCM) group.[[BR]] |
22 | | Analyzed NTP performance in a distributed Linux architecture and designed a system to augment NTP. |
| 12 | Django, Satchmo |
24 | | |
| 14 | Git, Mercurial, Subversion, CVS, patchutils |
| 15 | |
| 16 | Source control conversions, svndumptool |
| 17 | |
| 18 | !DevOps, Jenkins, !BuildBot, Trac, !MergeBot, iTest, Ansible |
| 19 | |
| 20 | virtualization, VMware ESXi, vCenter, ovftool, qemu/kvm, !VirtualBox, linode |
| 21 | |
| 22 | Linux Kernel development; file-systems, network, block, and character device drivers; x86/ARM/Xscale |
| 23 | |
| 24 | Linux distribution development and RPM packaging, autoconf tools |
| 25 | |
| 26 | Software security analysis and design |
| 27 | |
| 28 | Reverse-engineering Java bytecode to source code |
| 29 | |
| 30 | Dot Hill RAID array storage management |
| 31 | |
| 32 | data recovery, forensics |
| 33 | |
| 34 | Contributor to open source projects |
| 35 | |
| 36 | Mentoring coworkers |
| 37 | |
| 38 | Code generation |
| 39 | |
| 40 | Fedora, CentOS, Debian, !MontaVista, Solaris |
| 41 | |
| 42 | Javascript, CSS, html |
| 43 | |
| 44 | NXT robotics |
| 45 | |
| 46 | JTAG, embedded systems, Android |
| 47 | |
| 48 | System administration, NFS, NIS, NTP, Apache |
| 49 | |
| 50 | Make, Ant, Maven |
| 51 | |
| 52 | *NIX utilities |
| 53 | |
| 63 | == Technical Experience == |
| 64 | |
| 65 | Developed and deployed a virtualized (VMware ESXi and vCenter) continuous integration (Jenkins) and testing (iTest) system, applying !DevOps principles to a complex environment while source control transitioned from Subversion to Git. |
| 66 | |
| 67 | Developed Mercurial-based promotion engine for software development; providing pull requests and automated merges. |
| 68 | |
| 69 | Added configurable workflow capabilities to Trac, and gained trunk commit privileges in 2007 (over 700 commits to date). |
| 70 | |
| 71 | Created “Advanced !TicketWorkflow Plugin” to further enhance Trac's configurable workflow. |
| 72 | |
| 73 | Brought source control (Subversion), bug tracking (Trac), continuous integration (!BuildBot), and pull requests (!MergeBot) to a chaotic development environment. |
| 74 | |
| 75 | Scripted conversion of a CVS repository to Subversion with nightly updates; those scripts were the basis for the organization's later transition to Git. |
| 76 | |
| 77 | Converted Subversion, CVS, and VSS repositories with full, interleaved history into a multi-project Subversion repository. |
| 78 | |
| 79 | Recovered lost source code from Subversion metadata directories, recovered lost bugzilla bug tracking data from Outlook mailbox files and imported into Trac. |
| 80 | |
| 81 | Contributed new source control history transformations to svndumptool. |
| 82 | |
| 83 | Contributed bugfixes to Mercurial related to large files. |
| 84 | |
| 85 | |
| 86 | Linux kernel experience includes rewriting a vendor network driver for a 6x performance gain, implementing file-systems, flash block device driver, numerous character device drivers; and modifying existing drivers. |
| 87 | |
| 88 | Ported the iop321 XScale sub-architecture support from Linux 2.4 to Linux 2.5, and got it merged into Russell King's tree (2.5.65-rmk1, 2.5.70-rmk1), and from there into Linus's tree (2.5.62, 2.5.64, 2.5.68, 2.5.69). |
| 89 | |
| 90 | Worked on four x86-based boards and seven ARM/XScale-based boards, from initial bring-up on Linux through deployment, including an upgrade to a new generation platform. |
| 91 | |
| 92 | Designed and implemented the build and packaging system for the RPM-based Linux distribution running on those boards, an ARM/XScale cross-compile of !RedHat 6.X; documented build and release procedures for the SCM group. |
| 93 | |
| 94 | Automated the product installation process to create reproducible installs in 1/5th the time, and in the process, identified undocumented bugfixes missing from source control (CVS). |
| 95 | |
| 96 | |
| 97 | Implemented tools and libraries for managing storage arrays. |
| 98 | |
| 99 | Provided platform-level support for development team. |
| 100 | |
| 101 | Implemented a virtualized (!VirtualBox) environment for storage development. |
| 102 | |
| 103 | Created a data-structure based cable auditing tool for complex hardware deployments, providing specific, plain English explanations of the cabling errors. |
| 104 | |
| 105 | Scripted IOzone benchmarks and identified parameter-induced file-system performance problems on (up to) 32-way striped SCSI disks on a supercomputer. |
| 106 | |
| 107 | |
| 108 | Identified catastrophic security flaw in the company's flagship security product, created a new security design that passed third-party review, and evolved the implementation toward that design. |
| 109 | |
| 110 | From ad hoc backups, reverse-engineered legacy security binaries (Java bytecode) to recreate lost source code. |
| 111 | |
| 112 | Created tools for creating and analyzing attack trees and implemented code generation to enforce security properties. |
| 113 | |
| 114 | Mentored coworkers on security principles. |
| 115 | |
| 116 | |
| 117 | Mentored others through design and architectural discussions and voluntarily requested design and code reviews across team boundaries. |
| 118 | |
| 119 | Won first place in company programming competition. |
| 120 | |
| 121 | Contributed to or supported open source projects including: Trac, Linux, Vim, svndumptool, and Mercurial |
| 122 | |
| 123 | Launched a business using Django and Python as a solo founder. |
| 124 | |
| 125 | Maintained “breakindent” patches for Vim until Bram accepted a variant into upstream. |
| 126 | |
| 127 | Built and programmed a robotic floppy disk conversion system, including photographing disk labels via Android, data recovery in the presence of bad sectors and forensic analysis for deleted files. |
| 128 | |
| 129 | Wrote decoder for a digital multimeter's serial output. |