Objective
To contribute to a team of gifted, motivated problem solvers, committed to excellence, as a systems architect, integration specialist, software developer, infrastructure architect, toolsmith, or general troubleshooter. To use and expand my skills, experience, and knowledge, in the pursuit of personal and professional growth and positive change.
Career Summary
As a general technologist, I've acquired an expansive body of skills, experience, and knowledge of technologies, methodologies, and problem domains. I've delved deeply into the unique problems of, and principle technologies behind:
- Systems support and infrastructure for software development and deployment
- Digital Multimedia, graphic design and prepress
- Network design, deployment, and operations (including network security)
- Accounting (of assets, inventory, debts, transactions, and time)
- Content- and Asset-management for web-based publication
- Workflow and digital document management
- Premises security (i.e., alarms, locks, etc.)
Since my start in the industry in 1989, I've dedicated myself to understanding problem domains, technologies, and the human factors issues that bridge those two worlds. In the intervening decade and a half of work, I've acquired a unique and thorough blend of experiences with systems, solutions, and the business problems to which the they apply.
Functional Summary
I've been a software developer, systems and infrastructure architect, and general technologist, de facto human factors consultant, graphic designer, and support technician. I understand technology from the lowest levels to the highest, and am comfortable operating at any and all of those levels.
I have exceptional talents for:
- Analysis, pattern discovery, and synthesis
- System architecture
- Human and computer language (especially metaphor and analogy)
I have specific skills in, and passions for:
- Infrastructure software (i.e., software in support of other technological ends)
- Visual design and layout, in both traditional and electronic media
- Data mining, especially scrubbing and cleansing
- System reverse engineering (hardware, software, protocol, and data formats)
- Network architecture and management software (i.e., the writing of), protocol analysis, implementation, etc.
- Software frameworks (i.e., rationalizing code into libraries, toolsets, etc.)
- Bridging technology gaps (e.g., inter-language integration)
Programming Skills
Programming Languages
I've programmed in a variety of languages, on projects ranging from exploratory toys to enterprise software to embedded product firmware. Here's an arbitrary list:
- Python
- bash
- JavaScript, CoffeeScript
- Perl
- MC68HC11 Assembly
- C++
- C
- Emacs Lisp
Here are some with which I don't have enough experience to call them "skills", but I know I want to do more with them (or their relatives):
- Prolog
- Common Lisp / CLOS
- Clojure
- Erlang
Here are some I've used, but would prefer not to in the future (except to port systems away from them):
- PHP
- Java (the language, not the platform)
- Visual Basic
Other Languages
These are purpose-specific languages which, even when Turing-complete, are narrow in their scope. I group these (roughly) by type and purpose, but the groups are otherwise unordered.
- Generalized Markup and serialization: SGML, XML, YAML, JSON
- Stylesheets and Layout: PostScript, CSS/LessCSS, XSLT + XSL-FO
- Hypertext Markup and Layout: HTML, XHTML
- Document Markup: LATEX, Markdown, ReStructured Text (reST), POD (perldoc)
- Text Search: Regular Expressions (POSIX, Perl, Python, and other extended forms)
- Object Schema: CORBA IDL, XML Schema, Relax NG
- Database Schema and Querying: SQL
Technology Skills
Software Environment and Infrastructure Technologies
Here I include technologies I view as a part of the deployment “environment” in which software runs, including the infrastructure upon which the software is based. I group these by technology family, and within each group, list its members in chronological order of my initial exposure to them.
- IPC/RPC: Sockets, DCE-RPC, COM/DCOM, CORBA IIOP, Java RMI, XML-RPC, REST
- Filesharing: SMB/CIFS, NFS, WebDAV (at the protocol level)
- Data Persistence: Flat-file, RDBMS, Semantic Net, BTrieve/DBM, OO, ORDBMS, XML
- UI: CLI, Text-mode windowing, GUI, Web forms, Web-based DHTML+JavaScript, Flash
Software Development Infrastructure Technologies
Here I include the technologies I view as a part of the process of building software. This includes specific compiler suites, toolchains, etc. This list is not exhaustive, but indicative. I group these by tool family, and within each group, list its members by my rating of their worth in solving the problem (greatest to least.)
- Source Management: Perforce SCM, Subversion, CVS, RCS
- Dependancy Management: GNU Make, MS nmake
- Compilation/Toolchain: GCC+GNU toolchain, Borland C/C++, MS Visual C/C++
- Parsing/Lexing: ANTLR, PCCTS, Flex+Bison, Lex+YACC
Operating Systems / Platforms
Here I include the hardware and software platforms on which everything runs, including “virtual” platforms implemented on top of other environments.
- Hardware Platforms: Intel-based PC (from 8086 ISA through current technology, including PC104(+)), Motorola 68k-based Macintosh, PowerPC-based Macintosh, Sun SPARC-based workstations (5, 20, Ultra), Palm, Sony Clié, custom embedded platforms
- Operating Systems: MS-DOS, Microsoft Windows (3.x, 95/8, NT/2000, XP), Linux (Red Hat, Mandrake, Gentoo, LNX-BBC, LFS, Hand-built embedded), NetBSD, Solaris, Mac OS (pre-OS X and OS X), BeOS
- Virtual Environments: Cygwin, Java Virtual Machine (at the bytecode level), VMWare
- Networking Technologies: IP (TCP+UDP), DNS, DHCP, RADIUS, NTP, LDAP & A/D, Infoblox NIOS, 10/100/1000 Ethernet, cable plants (Cat3/5, termination), Fluke One-Touch, Fluke LANmeter, PathMaster, Net-Hopper switches, layer 0-8 troubleshooting and diagnosis (0: financial, 8: political), routing, switching, firewalls (ipchains/iptables/shorewall), NAT, IPSec, SSH, SSL, Ethereal (etc.)
General Productivity Applications and Technologies
It ought to go without saying that, as a seasoned software developer, I know my way around just about any piece of software into which I come into contact. However, every package has its idiosyncrasies, so it's important to know just which ones I use regularly enough to call myself “skilled” in them.
- Office Suites: Microsoft Office (through 2003, including XML), WordPerfect Office (through 10), StarOffice / OpenOffice 2.x (including XML)
- Graphics / Multimedia Tools: Adobe Photoshop, The GIMP, CorelDraw!, PageMaker, Macromedia StudioMX (Flash, Fireworks, Freehand, Dreamweaver), AutoCAD (including programmatic control via ActiveX and AutoLISP)
- Financial Suites: GNUCash, Quickbooks, Quicken, Microsoft Money Small Business
Significant Projects and Responsibilities
Authentify xFA:
- Designed and implemented the canonical Python SDK for the Authentify xFA™ 2-factor authentication API. Project goals were extensibility and broad target support (traditional WSGI servers, Google App Engine, console, GUI, etc.)
Xiocom Wireless:
- Designed and built XOS, an OpenWrt-based embedded Linux on an IXP4xx platform, for large-scale wireless networks.
- Designed and developed a single-file XOS image, featuring the easy field upgrade process of an enterprise-grade router (i.e., copy a single file, select it, reboot.)
- Designed a JSON config schema, easily digested by tools, with direct translation into UI. Design goal was conceptual integrity of the schema and user experience. Built an extensible, retargetable expansion of the configuration into the underlying platform's format.
- Maintained an inherited, legacy, Linux for the Soekris x86 platform through transition to XOS on new hardware. Contributed to maintenance of an inherited captive-portal and billing system during the transition.
- Designed, built, and deployed tools for safe remote update of legacy platform code and configuration.
- Lead a team of four junior developers, mentoring on debugging technique and comprehension of complex, cross-platform systems.
Infoblox, Inc.:
- Worked with customers to develop architecture for DNS, DHCP, and other core network services around the Infoblox platform.
- Performed customer deployment and data migration as part of the Professional Services group.
- Designed and developed customized operator user interfaces around the platform API.
- Designed customized operator user interfaces, providing high-level abstractions and services on top of the core platform API.
Krugle, Inc.:
- Responsible for initial population of the “rich search” data set, including scraping and normalizing ill-formed data sources, canonicalizing data from multiple sources, and resolving multiple sources to produce a single, comprehensive view of the data.
-
Wrote scraping and crawling code for:
- Wikipedia (MediaWiki markup)
-
Open-source project metadata:
- SourceForge (using FLOSSmole data)
- Freshmeat
- Apache Project
- DOAP (Description Of A Project)
- Javadoc (from HTML)
-
Created extensible, canonical internal XML markup
standards for three major datatypes:
- technical terms (e.g., Wikipedia)
- project metadata
- API documentation (e.g., Javadoc)
- Authored comprehensive roadmap and architecture document for a next-generation backend built around ReST principles, the Apache Xindice XML storage system, and extensions to existing Python libraries written for “rich search” population.
Advanced Simulation Technology, Inc. (ASTi):
- Created ABS (ASTi Build System,) a suite of build and dependency management tools to manage builds of source code and binary packages stored across Subversion, CVS, FTP, and HTTP (to ease company's migration from CVS to Subversion.)
- Created comprehensive Python libraries to wrap basic access to source control repositories in a uniform mechanism. Libraries currently support trivial CVS and Subversion operations, but are designed with complete extensibility to other SCM platforms (e.g., Perforce) in mind.
- Created comprehensive Python libraries to manage Debian packages, both at the source-tree level (i.e., debian/control, etc.) and at the binary package level (wrappers around ar, etc., to allow scripted inspection, creation, and modification of packages.
HFD:
- Responsible for all system administration and infrastructure architecture issues for in-house systems and client-facing systems and hosted client applications.
- Lead Architect for the Monkey content management system, deployed at several large non-profit and government organizations.
- Lead Architect for all client technical solutions, including online conference registration, “public” submission to content management tools, etc.
Hummingbird:
- Worked on the internal J2EE server development team to design and implement open-source automated testing tools for J2EE server compliance.
- Wrote Automated Test Catalog Management, a paper outlining a system to ease the manual burden of maintaining the test suite.
Net-HOPPER: (formerly LAN-hopper, acquired by Spirent Communications)
- Researched and specified a PC/104+ based replacement for an ISA passive-backplane based embedded Linux system.
- Adapted CASPER toolset to provide a framework for exercising the PC/104+ based system during FCC testing.
- Worked on defining, designing, and implementing ALES, the Adiamante Linux Embedding Suite, a set of tools for embedding Linux.
Core Communications:
- Designed, implemented, deployed, and managed accounting and disbursement software in support of Core's third-party credit-card billing services for Internet merchants.
- Created a system to reliably handle commissions and other internal accounting on $1.5 million per month gross transaction volume.
- Created reporting infrastructure to allow third-party billing clients to retrieve accurate accounting of their commissions, transactions, fees, etc.
jGuru:
- Co-designed, deployed, and managed Linux systems infrastructure behind jGuru.com, the company's 500K+ views/month Java developer community nexus.
- Designed, explored preliminary architecture for C2, an embedded Linux take on managing the cluster of machines behind jGuru.com
- Did extensive work with the CTO to help clean up the development process based around Perforce SCM
- Explored, established best practices for a “pristine sources” SCM methodology, to allow more fluid integration of third-party sources into an in-house codebase.
- Explored best practices for a Perforce-based approach to system configuration management.
- Worked on recoding and redesigning the Perl Prototype library in Python, to support prototype-based OOP in Python.
46th IETF Meeting - Terminal Room Team:
- Managed printing, print servers for 2300+ attendees, 45000+ pages printed over the five-day meeting.
- Installed, managed, and deployed ~100 workstations running a mix of Linux and Win2k.
- Wrote CASPER (CASPER: Automated System to Perform Enterprise Replication), a Ghost-like tool to install hard drive images over the network. CASPER was, effectively, my first true Linux embedding project, since it ran off of a set of Linux floppies for creating and retrieving disk images.
Innovative Workflow Engineering, Inc.: (now VirPack.com)
- Designed and implemented discrete event simulation engine in Perl. No simulation engines existed adequate to our purposes within our price range.
- Designed and implemented a set of "hooks" into the Optika FPmulti and FPreport document imaging/COLD product to collect system statistics.
- Chief Architect of the eXtensible Workflow Package Language (XWPL), an XML-based language to describe packages of files and related data for workflow interchange.
CentralReservations.COM: (A Landmark Communications Company, now defunct)
- Built one of the first and most extensive web-based systems to offer online resort property rental with realtime availability information.
- Designed and built Linux-based gateway machines to serve as 24x7 access to DOS-based reservations software at individual property-managers.
- In support of the dynamic nature of the website, implemented a Perl module to support Prototype-based OOP. The library made extensive use of Perl grey-magic (AUTOLOAD, closures, subroutine references, parameters as a list, etc.)
Red Hat Software:
- In early 1997, part of a three-person team that built a Java/CORBA based order and inventory management system to replace their existing Mac-based product. Worked with bleeding edge Linux Java implementation and Early Access Java CORBA tools.
- Personally built a Java/CORBA middleware system to wrap all access to persistent storage. A preprocessor expanded extension keywords to the Java language to build infrastructure for persistent and distributed objects.
Worldwide Solutions, Inc.:
- Developed corporate identity for WWSI, including logo, business cards, letterhead, etc.
-
During the course of work with WWSI, built networks for
several tradeshows:
- JavaOne (1996)
- Microsoft SiteBuilder (1996)
- EMA (Electronic Messaging Association) (1996)
- Netscape Developer's Conference (1996)
- Informix Worldwide Users' Conference (1997)
LAN-hopper Systems, Inc.: (acquired by Spirent Communications)
- Built first web interface for PATHmaster software. Involved intricate maintenance of session state before cookies were pervasive.
Networld+Interop InteropNet NOC Team Member:
- Designed and implemented KATHMANDU, a system to manage the InteropNet address space (45/8). Roughly 50kLOC of Perl.
- As part of KATHMANDU, developed visualization tools to show relationships among addressing entities on the network, including technology relationships and financial / business relationships (e.g., maps between booths and equipment “peds”, etc.)
- Pioneered Network Information Management (NIM) technology for collecting disparate information about networks in a central system.
- In support of KATHMANDU work, refined the Perl Prototype library, and added an implicit persistence framework. Made prototype objects semi-transparently persistent against an RDBMS backend.
- Over five years, rose in responsibilities on the team doing trouble-shooting and management of a 24x7, short-term, high-volume tradeshow network. TCP/IP, Ethernet/Fast Ethernet, etc. The largest, non-military, mobile network in the world.
Litton Poly-Scientific:
- Designed and implemented low-level driver and communications / database library for PC based configuration of PointGuard Access Control and Alarm panels (based on Echelon LonWorks technology). This backend library was the basis for a colleague's Windows UI.
- Designed and implemented UI for PC based configuration of the RCC/DDC series of alarm panels (MC68k-based embedded systems). This involved building a C++ database engine to run out of ROM on the 68k board. That means I know what an “in-place new” is.
- Designed and built GPIB and embedded-systems based automated test equipment for components in the Longbow targeting system on the Apache helicopter. Discovered, analysed, and solved discrepancies in the timing assumptions made by the original designs. This project involved hardware design (around the Motorola 68HC11 8-bit microcontroller and the North Atlantic Angle Position Indicator), MC68HC11 assembler, a C++ OLE Automation object to manipulate the GPIB and HC11 based systems, and a radically forward VB UI.
- Designed and implemented a Java (Swing) UI and test “harness” for automated test equipment. Included Jython for scriptability.
The MultiMedia Lab at Virginia Tech:
- Produced multimedia presentation to accompany Dr. G. Wayne Clough's Martin S. Kapp lecture on finite element analysis of soil in civil engineering projects.
- Worked closely with Virginia Tech faculty to produce multimedia presentations and visualizations for classroom and professional use.
- Developed infrastructure and software to support multimedia content creation and management.