wiki:Resume

Version 9 (modified by retracile, 10 years ago) (diff)

--

Resume

Software Engineer and Entrepreneur with 14+ years of experience, Linux development, tools development, security design

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.

Preferred Languages

Python, sh/bash, C/C++, and ARM/XScale assembly

Technical Experience

Launched a business using Django and Python.
Implemented tools and libraries for managing storage arrays, provided platform-level support for development tream.
Developed Mercurial-­based promotion engine for software development.
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.
Added workflow capabilities to Trac, and gained /trunk commit privileges in 2007.
Brought source control (Subversion), bug tracking (Trac), build processes (BuildBot) and automated tools to a chaotic development environment.
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).
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.
Linux kernel experience includes initial bring-up on new ARM/XScale boards; implementing a network driver, file-system, flash block device driver, numerous character device drivers; and modifying existing drivers.
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.
Analyzed NTP performance in a distributed Linux architecture and designed a system to augment NTP.

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 other's 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.

Employment History

Software Engineer at Tektronix Communications (via contracting firms) (2011 - current)
Subversion, Mercurial, storage development

Entrepreneur at brickbuiltnameplates.com (2009-current)
Everything from conception through launch

Software Engineer at HEB Technologies (2008 - 2011)
Create security design for secure collaboration tool and evolve legacy system towards it.

Software Tools Engineer at CommProve Inc. (2006 - 2007)
Trac, Subversion, BuildBot and integration thereof to improve reproducibility and automation.

Software Engineer (Platforms) at Tektronix Texas / Inet Technologies (1999 - 2006)
Linux kernel and distribution work. Software development process improvements, primarily improving the reproducibility of the product.

"Ancient History" (pre-1999)
Freelance computer consulting since high school, and a couple other computer related jobs.