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 solutions 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, and reverse-engineering
- Software frameworks (i.e., rationalizing code into libraries, toolsets, etc.)
- Bridging technology gaps (e.g., inter-language integration)
Programming Skills
Programming Languages
I list these in three groups. In the first group are those
languages in which I have achieved mastery and worked
“deep black magic.” I list them in reverse
chronological order of my initial experience with them (which
roughly approximates the order of my mastery and adoption of
each of them as my language of choice, although in several cases
there is significant overlap.)
- Python
- JavaScript (with emphasis on prototype-based OOP features)
- Perl
- Java
- MC68HC11 Assembly
- Visual Basic
- C++
- C
In the second group are those languages with which I have
achieved familiarity and the ability to accomplish functional
work, but have not had occasion or specific reason to explore in
more depth. I list these in reverse order of my skill level with
them (greatest to least.)
- Jython (Python implemented in Java)
- Emacs LISP / LISP / AutoLISP
In the third group are those languages with which I have a
conceptual familiarity and have written “toy”
programs to exercise concepts, but have not written significant
code, or even short, task-specific programs. I group these
(roughly) by language type:
- Self, CLOS, Prolog
- Z80 Assembly (have reverse-engineered from machine code)
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: SGML, XML, YAML
- Stylesheets and Layout: PostScript , CSS1, CSS2+Positioning, XSLT + XSL-FO
- Hypertext Markup and Layout: HTML, XHTML
- Document Markup: LATEX
- 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
-
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 the next-generation basis for 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.