Changes between Version 18 and Version 19 of Resume


Ignore:
Timestamp:
Jan 29, 2023 3:04:38 AM (15 months ago)
Author:
retracile
Comment:

Update for 2023

Legend:

Unmodified
Added
Removed
Modified
  • Resume

    v18 v19  
    1 = Resume =
    2 Software Engineer and Entrepreneur with 17+ years of experience spanning tools development, Linux kernel and distribution development, security design, automation, virtualization, source control, and open source contributions.
     1Software Engineer and Entrepreneur with 23+ years of experience spanning tools development, Linux kernel and distribution development, security design, automation, virtualization, containerization, source control, and open source contributions
     2
     3
     4
     5== Skills: ==
     6
     7
     8Python, sh/bash, C/C++, ARM/Xscale assembly, Java
     9
     10Django, Satchmo
     11
     12Git, Mercurial, Subversion, CVS, patchutils
     13
     14Source control conversions, svndumptool
     15
     16!DevOps, Jenkins, !BuildBot, Trac, !MergeBot, iTest, Ansible, Atlassian suite (Bitbucket, Jira, Confluence, Bamboo)
     17
     18virtualization, VMware ESXi, vCenter, vCloud, ovftool, qemu/kvm, !VirtualBox, linode
     19
     20Docker, minikube, Rancher Desktop, Kubernetes, Helm, Hashicorp Vault
     21
     22Linux Kernel development; file-systems, network, block, and character device drivers; x86/ARM/Xscale
     23
     24Linux distribution development and RPM packaging
     25
     26Software security analysis and design
     27
     28Reverse-engineering Java bytecode to source code
     29
     30Dot Hill RAID array storage management
     31
     32Columnar database (!InfoBright)
     33
     34data recovery, forensics
     35
     36Contributor to open source projects
     37
     38Mentoring and training coworkers
     39
     40Code generation
     41
     42Fedora, CentOS, Debian, Solaris
     43
     44Javascript, CSS, html
     45
     46NXT robotics, CNC, 3D printing
     47
     48JTAG, embedded systems, Android
     49
     50System administration, NFS, NTP, Apache
     51
     52Make, Ant, Maven, Gradle
     53
     54*NIX utilities
     55
     56
     57
     58
     59
     60== Philosophy (Or "How I Work"): ==
     61
     62
     63 * Write code that is concise and clear.
     64
     65 * Select a minimal set of modular tools and languages with maximum combined scope; learn them extensively; apply them appropriately; and continually reevaluate the possibilities.
     66
     67 * Automate and augment as much as possible to reduce errors and speed up development.
     68
     69 * Use source control to its fullest to capture forward progress, improve confidence in changes, improve teamwork, and increase manageability of development.
     70
     71 * Watch the world around you; discern what is worth knowing; learn from others' successes and failures.
     72
     73 * Use Free and Open Source Software everywhere you can; know "why" when you can't, and work to change that.
     74
     75 * The path to performance is: fastest to implement first, then algorithmic improvements, then profiling guided improvements, then progressively lower languages with greater optimization. Tread no further down this path than you must.
     76
     77 * Push inherent complexity into data structures to simplify the code.
     78
     79
     80
     81== Technical Experience: ==
     82
     83
     84Automated development processes; implemented installation process around Helm to reduce manual steps and human error.
     85
     86Implemented Helm chart for identity provider solution; created reproducible local Kubernetes development environment based on minikube and later migrated to Rancher Desktop; designed configuration and secret management scheme; implemented migration to Hashicorp Vault.
     87
     88Helped maintain internal Keycloak fork, including version upgrades.
     89
     90Created tools around Jira, Bamboo, Confluence, Fortify, and NexusIQ to streamline the team's work, improve consistency, and automate repetitive tasks.
     91
     92Handled release processes, automated tasks done between human decision points (Jira issue creation, builds, test deployments, MOP generation, security scans).
     93
     94
     95
     96Replaced a data transformation C++ program that was the system throughput bottleneck, with a data-driven Python implementation which improved throughput by 10x, eliminating that stage as the system bottleneck.
     97
     98
     99
     100Developed 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.
     101
     102Developed Mercurial-based promotion engine for software development; providing pull requests and automated merges.
     103
     104Added configurable workflow capabilities to Trac, and gained trunk commit privileges in 2007 (over 700 commits).
     105
     106Created “Advanced !TicketWorkflow Plugin” to further enhance Trac's configurable workflow.
     107
     108Brought source control (Subversion), bug tracking (Trac), continuous integration (!BuildBot), and pull requests (!MergeBot) to a chaotic development environment.
     109
     110Scripted conversion of a CVS repository to Subversion with nightly updates; those scripts were the basis for the organization's later transition to Git.
     111
     112Converted Subversion, CVS, and VSS repositories with full, interleaved history into a multi-project Subversion repository.
     113
     114Recovered lost source code from Subversion metadata directories, recovered lost bugzilla bug tracking data from Outlook mailbox files and imported into Trac.
     115
     116Contributed new source control history transformations to svndumptool.
     117
     118Contributed bugfixes to Mercurial related to large files.
     119
     120
     121
     122Linux 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.
     123
     124Ported 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).
     125
     126Worked 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.
     127
     128Designed 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.
     129
     130Automated 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).
     131
     132
     133
     134Implemented tools and libraries for managing storage arrays.
     135
     136Provided platform-level support for development team.
     137
     138Implemented a virtualized (!VirtualBox) environment for storage development.
     139
     140Created a data-structure based cable auditing tool for complex hardware deployments, providing specific, plain English explanations of the cabling errors.
     141
     142Scripted IOzone benchmarks and identified parameter-induced file-system performance problems on (up to) 32-way striped SCSI disks on a supercomputer.
     143
     144
     145
     146Identified 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.
     147
     148From ad hoc backups, reverse-engineered legacy security binaries (Java bytecode) to recreate lost source code.
     149
     150Created tools for creating and analyzing attack trees and implemented code generation to enforce security properties.
     151
     152Mentored coworkers on security principles.
     153
     154
     155
     156Mentored others through design and architectural discussions and voluntarily requested design and code reviews across team boundaries.
     157
     158Won first place in company programming competition.
     159
     160Contributed to or supported open source projects including: Trac, Linux, Vim, svndumptool, and Mercurial
     161
     162Launched a business using Django and Python as a solo founder.
     163
     164Maintained “breakindent” patches for Vim until Bram accepted a variant into upstream.
     165
     166Built 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.
     167
     168Wrote decoder for a digital multimeter's serial output.
     169
     170
     171
     172== Links: ==
     173
     174
     175https://retracile.net
     176
     177https://brickbuiltnameplates.com
     178
     179
     180
     181https://trac.edgewall.org/search?q=ecarter
     182
     183https://trac-hacks.org/wiki/AdvancedTicketWorkflowPlugin
     184
     185https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git/log/?qt=grep&q=eli+carter
     186
     187https://www.mercurial-scm.org/repo/hg/log?rev=carter
     188
     189https://repos.borg.ch/svn/svndumptool/tags/svndumptool-0.6.1/CONTRIBUTORS.txt
     190
     191
     192
     193== Employment History: ==
     194
     195|| Synchronoss Technologies || Sr Deployment Architect (!DevOps) || 2017 - Current ||
     196|| Entrepreneur (brickbuiltnameplates.com, software) || Solo Founder || 2009 - Current ||
     197|| Viavi Solutions || Software Engineer || 2015 - 2017 ||
     198|| Independent Contractor || Software Engineer || 2014 - 2015 ||
     199|| Tektronix Communications (via contracting firms) || Software Engineer || 2011 - 2014 ||
     200|| HEB Technologies, LLC. || Software Security Engineer || 2008 - 2011 ||
     201|| !CommProve Inc. || Software Tools Engineer || 2006 - 2007 ||
     202|| Tektronix Texas / Inet Technologies || Software Engineer (Platforms) || 1999 – 2006 ||
     203
     204
     205
     206== Education: ==
     207
    3208
    4209Computer Engineering, B.S. and Mathematics, B.A. from Southern Methodist University, 1999, GPA: 3.8, Magna Cum Laude, with honors in the liberal arts.
    5210
    6 == Preferred Languages ==
    7 Python, sh/bash, C/C++, and ARM/XScale assembly
    8  
    9 == Skills ==
    10 Python, sh/bash, C/C++, ARM/Xscale assembly, Java
    11 
    12 Django, Satchmo
    13 
    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 
    54 Columnar database (!InfoBright)
    55 
    56 == Philosophy (Or "How I Work") ==
    57  * Write code that is concise and clear.
    58  * Select a minimal set of modular tools and languages with maximum combined scope; learn them extensively; apply them appropriately; and continually reevaluate the possibilities.
    59  * Automate and augment as much as possible to reduce errors and speed up development.
    60  * Use source control to its fullest to capture forward progress, improve confidence in changes, improve teamwork, and increase manageability of development.
    61  * Watch the world around you; discern what is worth knowing; learn from other's successes and failures.
    62  * Use Free and Open Source Software everywhere you can; know "why" when you can't, and work to change that.
    63  * The path to performance is: fastest to implement first, then algorithmic improvements, then profiling guided improvements, then progressively lower languages with greater optimization. Tread no further down this path than you must.
    64 
    65 == Technical Experience ==
    66 
    67 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.
    68 
    69 Developed Mercurial-based promotion engine for software development; providing pull requests and automated merges.
    70 
    71 Added configurable workflow capabilities to Trac, and gained trunk commit privileges in 2007 (over 700 commits to date).
    72 
    73 Created “Advanced !TicketWorkflow Plugin” to further enhance Trac's configurable workflow.
    74 
    75 Brought source control (Subversion), bug tracking (Trac), continuous integration (!BuildBot), and pull requests (!MergeBot) to a chaotic development environment.
    76 
    77 Scripted conversion of a CVS repository to Subversion with nightly updates; those scripts were the basis for the organization's later transition to Git.
    78 
    79 Converted Subversion, CVS, and VSS repositories with full, interleaved history into a multi-project Subversion repository.
    80 
    81 Recovered lost source code from Subversion metadata directories, recovered lost bugzilla bug tracking data from Outlook mailbox files and imported into Trac.
    82 
    83 Contributed new source control history transformations to svndumptool.
    84 
    85 Contributed bugfixes to Mercurial related to large files.
    86 
    87 
    88 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.
    89 
    90 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).
    91 
    92 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.
    93 
    94 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.
    95 
    96 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).
    97 
    98 
    99 Implemented tools and libraries for managing storage arrays.
    100 
    101 Provided platform-level support for development team.
    102 
    103 Implemented a virtualized (!VirtualBox) environment for storage development.
    104 
    105 Created a data-structure based cable auditing tool for complex hardware deployments, providing specific, plain English explanations of the cabling errors.
    106 
    107 Scripted IOzone benchmarks and identified parameter-induced file-system performance problems on (up to) 32-way striped SCSI disks on a supercomputer.
    108 
    109 
    110 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.
    111 
    112 From ad hoc backups, reverse-engineered legacy security binaries (Java bytecode) to recreate lost source code.
    113 
    114 Created tools for creating and analyzing attack trees and implemented code generation to enforce security properties.
    115 
    116 Mentored coworkers on security principles.
    117 
    118 
    119 Mentored others through design and architectural discussions and voluntarily requested design and code reviews across team boundaries.
    120 
    121 Won first place in company programming competition.
    122 
    123 Contributed to or supported open source projects including: Trac, Linux, Vim, svndumptool, and Mercurial
    124 
    125 Launched a business using Django and Python as a solo founder.
    126 
    127 Maintained “breakindent” patches for Vim until Bram accepted a variant into upstream.
    128 
    129 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.
    130 
    131 Wrote decoder for a digital multimeter's serial output.
    132  
    133 == Employment History ==
    134 Software Engineer at Viavi Solutions (2015-current)[[BR]]
    135 Software development in Python and C++, columnar database expertise
    136 
    137 Entrepreneur at brickbuiltnameplates.com (2009-current)[[BR]]
    138 Created everything from conception through launch
    139 
    140 Independent Contractor  Software Engineer (2014-2015)[[BR]]
    141 Continuous integration tools development and deployment
    142 
    143 Software Engineer at Tektronix Communications (via contracting firms) (2011 - 2014)[[BR]]
    144 Source control automation development, storage product backend development
    145 
    146 Software Engineer at HEB Technologies (2008 - 2011)[[BR]]
    147 Created security design for secure collaboration tool and evolve legacy system towards it.
    148 
    149 Software Tools Engineer at !CommProve Inc. (2006 - 2007)[[BR]]
    150 Trac, Subversion, !BuildBot and integration thereof to improve reproducibility and automation.
    151 
    152 Software Engineer (Platforms) at Tektronix Texas / Inet Technologies (1999 - 2006)[[BR]]
    153 Linux kernel and distribution work.
    154 Software development process improvements, primarily improving the reproducibility of the product.
    155 
    156 "Ancient History" (pre-1999)[[BR]]
    157 Freelance computer consulting since high school, and a couple other computer related jobs.