wiki:Resume

Software 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

Skills:

Python, sh/bash, C/C++, ARM/Xscale assembly, Java

Django, Satchmo

Git, Mercurial, Subversion, CVS, patchutils

Source control conversions, svndumptool

DevOps, Jenkins, BuildBot, Trac, MergeBot, iTest, Ansible, Atlassian suite (Bitbucket, Jira, Confluence, Bamboo)

virtualization, VMware ESXi, vCenter, vCloud, ovftool, qemu/kvm, VirtualBox, linode

Docker, minikube, Rancher Desktop, Kubernetes, Helm, Hashicorp Vault

Linux Kernel development; file-systems, network, block, and character device drivers; x86/ARM/Xscale

Linux distribution development and RPM packaging

Software security analysis and design

Reverse-engineering Java bytecode to source code

Dot Hill RAID array storage management

Columnar database (InfoBright)

data recovery, forensics

Contributor to open source projects

Mentoring and training coworkers

Code generation

Fedora, CentOS, Debian, Solaris

Javascript, CSS, html

NXT robotics, CNC, 3D printing

JTAG, embedded systems, Android

System administration, NFS, NTP, Apache

Make, Ant, Maven, Gradle

*NIX utilities

Philosophy (Or "How I Work"):

  • Write code that is concise and clear.
  • Select a minimal set of modular tools and languages with maximum combined scope; learn them extensively; apply them appropriately; and continually reevaluate the possibilities.
  • Automate and augment as much as possible to reduce errors and speed up development.
  • Use source control to its fullest to capture forward progress, improve confidence in changes, improve teamwork, and increase manageability of development.
  • Watch the world around you; discern what is worth knowing; learn from others' successes and failures.
  • Use Free and Open Source Software everywhere you can; know "why" when you can't, and work to change that.
  • 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.
  • Push inherent complexity into data structures to simplify the code.

Technical Experience:

Automated development processes; implemented installation process around Helm to reduce manual steps and human error.

Implemented 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.

Helped maintain internal Keycloak fork, including version upgrades.

Created tools around Jira, Bamboo, Confluence, Fortify, and NexusIQ to streamline the team's work, improve consistency, and automate repetitive tasks.

Handled release processes, automated tasks done between human decision points (Jira issue creation, builds, test deployments, MOP generation, security scans).

Replaced 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.

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.

Developed Mercurial-based promotion engine for software development; providing pull requests and automated merges.

Added configurable workflow capabilities to Trac, and gained trunk commit privileges in 2007 (over 700 commits).

Created “Advanced TicketWorkflow Plugin” to further enhance Trac's configurable workflow.

Brought source control (Subversion), bug tracking (Trac), continuous integration (BuildBot), and pull requests (MergeBot) to a chaotic development environment.

Scripted conversion of a CVS repository to Subversion with nightly updates; those scripts were the basis for the organization's later transition to Git.

Converted Subversion, CVS, and VSS repositories with full, interleaved history into a multi-project Subversion repository.

Recovered lost source code from Subversion metadata directories, recovered lost bugzilla bug tracking data from Outlook mailbox files and imported into Trac.

Contributed new source control history transformations to svndumptool.

Contributed bugfixes to Mercurial related to large files.

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.

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).

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.

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.

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).

Implemented tools and libraries for managing storage arrays.

Provided platform-level support for development team.

Implemented a virtualized (VirtualBox) environment for storage development.

Created a data-structure based cable auditing tool for complex hardware deployments, providing specific, plain English explanations of the cabling errors.

Scripted IOzone benchmarks and identified parameter-induced file-system performance problems on (up to) 32-way striped SCSI disks on a supercomputer.

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.

From ad hoc backups, reverse-engineered legacy security binaries (Java bytecode) to recreate lost source code.

Created tools for creating and analyzing attack trees and implemented code generation to enforce security properties.

Mentored coworkers on security principles.

Mentored others through design and architectural discussions and voluntarily requested design and code reviews across team boundaries.

Won first place in company programming competition.

Contributed to or supported open source projects including: Trac, Linux, Vim, svndumptool, and Mercurial

Launched a business using Django and Python as a solo founder.

Maintained “breakindent” patches for Vim until Bram accepted a variant into upstream.

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.

Wrote decoder for a digital multimeter's serial output.

Links:

https://retracile.net

https://brickbuiltnameplates.com

https://trac.edgewall.org/search?q=ecarter

https://trac-hacks.org/wiki/AdvancedTicketWorkflowPlugin

https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git/log/?qt=grep&q=eli+carter

https://www.mercurial-scm.org/repo/hg/log?rev=carter

https://repos.borg.ch/svn/svndumptool/tags/svndumptool-0.6.1/CONTRIBUTORS.txt

Employment History:

Synchronoss Technologies Sr Deployment Architect (DevOps) 2017 - Current
Entrepreneur (brickbuiltnameplates.com, software) Solo Founder 2009 - Current
Viavi Solutions Software Engineer 2015 - 2017
Independent Contractor Software Engineer 2014 - 2015
Tektronix Communications (via contracting firms) Software Engineer 2011 - 2014
HEB Technologies, LLC. Software Security Engineer 2008 - 2011
CommProve Inc. Software Tools Engineer 2006 - 2007
Tektronix Texas / Inet Technologies Software Engineer (Platforms) 1999 – 2006

Education:

Computer Engineering, B.S. and Mathematics, B.A. from Southern Methodist University, 1999, GPA: 3.8, Magna Cum Laude, with honors in the liberal arts.

Last modified 22 months ago Last modified on Jan 29, 2023 3:04:38 AM