Generalist with broad and deep experience in all aspects of software design, software development, systems administration, process design, and management of functional teams.
Produce innovative and humane software tools that delight users.
Early years at Apple taught me to be fanatical about the quality of the end-user experience, from out-of-the-box through to the completion of the users ultimate task. I carry this sensibility into every facet of my work.
Source code as a creative process
Source code is a creative work whose proper audience is other human engineers. It should be readable, well documented, well factored, and reusable whenever possible. Object oriented paradigms are often preferable, but even when not available, attributes of the object-oriented model should still be retained: encapsulation, reusability, documentation both of interface and implementation. Pragmatism is important, but even ad-hoc code should be written with a maintenance path and reusability in mind. All tools and subroutines should be atomic, either succeeding completely or failing gracefully. Nothing should be written without an accompanying means to test it. Testing should usually be immediate. The simplest and most elegant solution is usually the best one, and is often the most difficult to achieve.
Programs must preserve the integrity of data, increase its integrity whenever manipulating it, but also be flexible and secure when handling data of unknown integrity. On the input side, data should be checked against rigorous predetermined assumptions about its content, cleaned, defaulted, and/or rejected accordingly. On the output side, programs should avoid emitting data that does not match specifications. Flexible data models should be a priority, but inflexible ones must be honored. Just as people should, software programs should be liberal in what they accept and conservative in what they emit.
Giving back to the community
As an active member of the Open Source community, I believe in using open source tools and in contributing back to the open source movement. I am the creator of http://openxtras.org/ and contributor to the Comprehensive Perl Archive Network (CPAN) the worlds largest repository of reusable open source modules.
Areas of Expertise
Desktop application development
12 years experience developing non-Web cross-platform applications for delivery on the desktop for Macintosh (12 years) and Windows (9 years). Experience includes: requirements analysis, specification, software design, packaging design, development, specification writing, bill of materials planning, installation design and engineering, mastering and replication, configuration management, build system automation, coordination among diverse sub-teams including technical writing, quality control, sales, etc. Languages and environments include: C, C++, Director (Lingo), FileMaker.
Web application development
6 years experience in Web application development, including 3 years experience with mod_perl. Expert user of DBI interface to SQL services on Linux, especially mysql. Implemented own libraries of wrapper objects for SQL-based database queries. Developed several other general-purpose development and debugging modules. Developed a proprietary management interface for mysql SQL server which allows dynamic schema change propagation and data propagation among distributed groups of private development servers and public database servers while maintaining 100% uptime. Have developed 2 different Web application frameworks in Perl, but in recent years have preferred Embperl.
6 years experience with all aspects of Perl programming, including systems administration, business process automation, CGI and related methods, mod_perl, Embperl, object-oriented development, documentation techniques. CPAN contributor. Regularly attend annual Perl / Open Source conference.
Unix system administration
6 years experience in Unix system administration. For 2 years, ran a company of 30 employees in 8 locations with over 20 Unix servers. Unix systems were used for firewall, VPN, Web services (both Intranet and extranet over 20 separate Web sites), e-mail (SMTP and POP), company-wide file sharing services, business process automation, and much more. Experienced in creating documented, secure, reproducible installation and setup procedures, and reproducible software and hardware configurations.
6 years experience administering heterogeneous IP networks mixing Unix, Macintosh, and all variants of Windows. Knowledge of IP subnetting, routing, VPN, firewalling, NAT, DNS, and more. 2 years experience setting up and maintaining highly-available Web server installations in co-located data centers.
12 years experience designing high-quality easy-to-use applications for non-technical users. Experienced with: feature design and naming, feasibility analysis, consistency, look and feel development and execution, dialog and interaction design, integrated help systems, shortcut and efficiency design, etc.
11 years experience developing titles for CD-ROM delivery. Including: CD-based installations, CD-based content delivery, and auto-play CD-only software titles.
8 years experience developing cross-platform Director-based applications, including extremely large and complex applications using custom Xtras (plug-ins) for both Mac and Windows. Have developed proprietary and open-source reusable tools to facilitate Director application development.
5 years experience writing technical documentation for both technical and non-technical audiences, for both end-user and internal development team use. Experience managing and communicating with external technical writers. Experience proofreading, editing, and correcting technical documentation. Excellent written communication skills. Broad understanding of issues of style, level, tone, and vocabulary. Experience developing and working within style guides and documentation standards.
Supervising editorial content
2 years experience editing health/medical news articles. (450 1,000-word articles.) Hired, trained, supervised, and criticized both staff and freelance medical writers. Developed internal editing process and standards. Coordinated fact-checking procedures. Developed Web-based process automation software to manage intake and process the flow of news articles from writers to editors to corporate asset database to automated timed-release on public Web sites. Designed process for change tracking and updating.
Data analysis and design
6 years experience analyzing database design issues for clients and internal company needs. Have developed a series of proprietary perl modules, tools and techniques, for repeatable data migration, manipulation, transformation, and publication. Experienced with both batch and interactive modes of data retrieval and migration. Cleaning and regularizing data is a particular specialty.
10 years experience generating automated markup output from databases, including both RTF and HTML target languages.
Business process automation
4 years experience in developing Unix-based tools to automate business processes and reporting: Web- and email-delivered automated status reports; automated replication of data for offsite backups and process flow management; automated log file rotation, transfer, analysis, and reporting; automated invoice generation; and many other examples.
Management and teamwork
12 years experience working on large software development teams. 3 years experience managing outside contractors and tracking budgets, deliverables, and other aspects of performance against contracts. 4 years experience managing internal project teams involving diverse mixes of partner-level experts, employees, project employees, and freelancers. Experienced in hiring, firing, evaluating, and disciplining employees. Good team worker with excellent upward, downward, and lateral communications skills.
Running a business
6 years experience owning and running small businesses with 2-4 business partners. 2 years experience founding helping run an investment-based startup business with 30 employees. Familiar with business development and planning issues, budgeting, project needs analysis, client development, client communications, reading balance sheet, P/L statements, budget forecasts, cash flow management, and other accounting issues.
Click the hyperlinked company names in the Employment history above or visit my Projects page for a diary of selected past projects. Also on the Projects page, youll find a tour of my active Open Source projects including complete source code and documentation.