Charles Duffy - Résumé Contact Information: Charles Duffy 10314 Georgian Drive Austin, TX 78753 Phone: 512 394 3516 Email: charles@dyfis.net Professional Objective: To write good code for fun and profit. Employment History: Senior Systems-Level Developer Catalis, Inc. November 2002-January 2008 System administration, software development, development tooling, security design, deployment engineering, and more. Projects: * Built Python-based infrastructure for building object-oriented TTY-centric screen scrapers, used for hostile integration with 3rd-party applications. * Designed and implemented a template-based system configuration mechanism used to automate system administration tasks associated with deployed customer sites. * Designed and implemented highly custom source control and build system infrastructure (based on SVN) offering in-tree configuration, QA and release process tracking and other advanced functionality. * Designed tightly integrated faxing infrastructure for the Catalis application. Substantially extended HylaFAX+ to implement portions of this infrastructure, and designed specifications for a generalized API (implemented and merged by the HylaFAX+ maintainer) for improved server-side cover page management. * Responsible for interacting with upstream open source projects providing components used by Catalis. * Implemented high-availability database and application clustering services for mission-critical infrastructure. * Held lead and assisting system administration and internal user/developer support roles throughout employment. * Built and maintained substantially customized Linux distributions for developers' workstations and deployed servers based on Red Hat, SuSE and Gentoo Linux distributions. * Designed and implemented security infrastructure based on OS-level block encryption and hardware-centric key management on Linux. * Wrote custom scripts (in Python and POSIX sh) for database administration, quality assurance, deployed server maintenance, and other functions. * Built installation and setup scripts and infrastructure for Catalis application servers and dedicated clients. * Designed and implemented infrastructure for remote administration and update of deployed servers. * Modified DSDT for HA8000/70 servers from partner Hitachi to correct PCI routing under ACPI-aware Linux builds. * Built VNC-based infrastructure for online demonstration of Catalis application and client support. * Acted as backup Oracle DBA when primary staff holding that position was unavailable. * Built and maintained the company phone and fax systems, including porting Asterisk modules written for Asterisk 1.0 to Asterisk 1.4, debugging of Sangoma's wanpipe drivers and custom dialplan and AGI script development for Asterisk. * Configured and maintained a Fibre Channel SAN using EMC hardware, hosting a GFS filesystem with fencing provided by integration with Dell DRAC management hardware. Senior Developer NossaTV, Inc. April 2006-Spring 2007 Design and implementation of p2p media distribution, security infrastructure, core server functionality, and backend storage. Projects: * Wrote protocol and API design and documented low-level implementation specs. * Built DRM functionality, streaming key data mixed with video content using the Ogg container format. * Responsible for designing and coding around license requirements imposed by open source components. * Squashed a bug in the upstream VLC Mozilla plugin preventing video playback on MacOS X on Intel. * Provided design and code review to junior development staff members and decision support on technical issues to management. Consultant Jeff Sloan, Gary Janosz, et al. April 2004-May 2004 Performed analysis of hard drive with evidential value. Projects: * Performed forensic analysis of HFS+ filesystem metadata and contents, following best practices and writing analysis tools and scripts as-necessary. * Produced written report of findings which resulted in relevant charges being dropped. Votesys Project Lead Developer Associated Students, Chico February 2002-May 2002 Responsible for the design, development and deployment of the online voting system used at CSU, Chico for the election of the 2002 Associated Students board. Coordinated software development activity among a team of four. Achievements: * Built testing frameworks (including an XML-based framework during initial development and a Scheme-based framework later) to ensure correct functioning of the system backend. * Wrote extensive Docbook-based documentation to aid in future deployments. * Received *Outstanding Contribution to the University Award* from CSU, Chico in recognition of this project. * Performed realistic evaluation of security, including an analysis of system limitations. Software Consultant Chico Nissan, Inc. September 2001-April 2002 Chief geek and bottle washer. Responsible for all IT and software development tasks other than NT system administration. Projects: * Oversaw server-side transition from SCO UNIX to Linux, reducing hardware costs. * Moved clients from dumb terminals to network-connected workstations, eliminating the need for extra equipment. * Maintained custom business software (written in UNIFY ACCELL/4GL), including addition of new functionality to speed the parts department's inventory process. * Assisted office staff with day-to-day technical issues. * Delegated tasks up to a specialized consultant or down to entry-level personnel as appropriate. * Trained new IT personnel, and assisted in selection of new hires. Software Engineer (Intern) MontaVista Software, Inc. May 2000-Sep 2002 Acted in a variety of roles including porting, packaging and testing of software for the Hard Hat Linux product, and writing and maintaining internal-use application software. Projects: * Packaged a large number of 3rd-party applications as RPMs, modifying said packages as necessary to permit cross-compilation targeting all CPU architectures supported by MontaVista. * Conceived, designed and developed rpmlint-hhl, an automated system for performing limited QA on all packages produced, based on MandrakeSoft's rpmlint. * Designed and developed software for controlling The Graphics Farm, a board farm built for automated and semi-automated testing of Hard Hat Graphics (now MontaVista Graphics), Qt/Embedded and Java/AWT products, while acting in the role of Graphics/QA Liaison * Ported Linux MPPE kernel driver to Linux 2.4. * Built a kernel driver to accept input core events from userland, and associated userland software to distribute input core events via TCP. Software Consultant Weathernews, Inc. 1999-2000 Wrote assorted file conversion, system administration and utility software in C and Perl. Software Consultant Standard Beauty Supply December 1999-January 2000 Wrote tools to extract financial information from aging proprietary software, saving data reentry costs. Linux Guru Computers Cheap! August 1999-October 1999 Built a low-volume ISP service for a local computer shop looking to offer such services. Volunteer System Administrator Chico Unified School District March 1999-February 2002 Offered occasional system administration and simple software development (scripting) services as-needed. Projects: * Installed, configured and documented file and print servers intended for clients on multiple platforms. * Created and documented special-purpose Linux distribution. * Offered after-school sessions to teach Python to 8th-grade students interested in programming. * After-the-fact analysis and response to security breaches, including NIDS installation and configuration. * Built system administration tools customized for the educational environment. Software Development Skills: Broad Programming Language Skills * Highly proficient with C, Python and bash. * Conversant in Java, Scheme, Boo, POSIX sh and others. * Some experience with TCL (including Expect), MIPS assembly, lex and yacc, PHP, Perl, C++ and others. * Experience building user interfaces in C and Python with GTK. * Able to learn new languages and APIs quickly as the need arises. * Able to integrate code written in many distinct languages. This includes experience linking Java with C++ (via Cygnus's CNI interface), Java with Python (via Jython), Java with Scheme (via Kawa), Scheme with C (via guile's C API), and Python with C. * Familiar with XML parsing frameworks in Java and Python. Version Control System Expertise * Experience with numerous revision control systems, including CVS, GNU Arch, Bazaar, Bazaar-NG, Subversion, BitKeeper and others. * Accustomed to both distributed and centralized workflows; PQM systems, hook infrastructures and other tree management tools. * Experience developing code using the C and Python APIs for close integration with Subversion and the Python API for tight integration with Bazaar-NG. * Experience building frameworks for automated quality checking, policy enforcement and build process validation with CVS and SVN. Kernel Development Experience * Experience developing Linux network drivers (including a NIC driver for the Winbond w840 and the first known port of the Linux MPPE driver to a 2.4 kernel). * Strong familiarity with the Linux input core. * Kernel debugging w/ Abatron gdb<->jtag hardware. * Some bugfixing experience w/ the Linux/MIPS architecture-dependent code Rapid Database-Backed Application Development Experience * Able to intuit third-normal-form database schema in problem spaces of moderate complexity. * Experience using tools such as SQLAlchemy and Torque to quickly build a usable database-backed object model. * Experience abstracting application backend and frontend for concurrent development or creation of multiple frontends. * Experience reducing debugging time and improving application quality through pervasive use of automated testing. * Experience selecting and integration a combination of tools conducive to rapid project completion. * Experience using a templating system (such as Velocity, Genshi, Kid, FreeMarker and others) to reduce development time and better implement proper separation of controller and view layers. * Experience building web applications using the Tomcat servlet container in Java, or the TurboGears and CherryPy frameworks in Python. Cross-Platform Programming Experience * Experience porting UNIX software across a variety of platforms (including HPUX, AIX, Solaris, IRIX and mkLinux) and architectures (including x86, MIPS, SuperH, StrongARM, PowerPC). * Experience porting UNIX software to Windows using Cygwin, gtk+/win32 and wxWindows. * Experience porting Windows software to UNIX using WINE, including development of patches for WINE where appropriate. System Administration Skills: Server Configuration and Operation * Experience administering varied services on UNIX including Windows and Macintosh-compatible file and print sharing (via samba and netatalk), web services (via Jetty and Tomcat), databases (Oracle 9i & 10g, PostgreSQL, EnterpriseDB, MySQL, UNIFY ACCELL/SQL, and the Continuent database clustering service), mail services (Courier, sendmail and qmail), instant messaging services (Jabber), DNS (BIND), groupware (OpenGroupware.org) and intrusion detection systems (SNORT). * Experience using the Linux-HA high availability framework, dm_multipath-based redundant I/O configuration on Linux, the GFS clustering filesystem, and related toolage. * Extensive problem-solving and system administration experience on Linux. Some system administration experience on AIX, SCO UNIX, Solaris and HPUX. * In-depth experience with the Asterisk PBX, including dialplan development, SIP phone provisioning and configuration, troubleshooting, application module development, and more. End-User Support * Experience interacting with office personnel to provide 1-on-1 training, diagnose and resolve ongoing issues, and determine application requirements. * Experience providing internal and customer support via email, phone and face-to-face communications. Willing and able to suit up for the latter. General Purpose Skills: Strong Interpersonal Skills * Able to work well with fellow developers and non-developers alike. Substantial experience explaining technically involved processes in plain English, and writing or reviewing technical documentation. * Presentations given to CSLUG (the Chico State Linux Users Group) have included talks on "Rapid Application Development with Python and libglade" and on the redeployment of almost-junked JavaStations as effective Linux-based diskless workstations in an educational environment. These presentations had to be effective and interesting to an audience with widely varying levels of expertise. Personal Involvement in Open Source Software Development: * Developed educational package DTCT (Duff's Toy Compiler Tools). * Major extensions (or forks) to SPIM (gxSPIM), JJFFE and UCB Logo (SDLlogo). * Minor contributions to a wide variety of projects such as WINE, OpenVPN, the Linux input core, Linux-MPPE, Freemind, XRMS, XShipWars and many others. * Former maintainer of CSCVS, a Python-based open source application for intuiting a CVS repository's history into changesets and (among other things) importing those changesets into GNU Arch. * Other ongoing projects -- ask!