The various focuses of my professional efforts.
I have been doing professional software-development work since 1985, starting with application engineering and systems support for a few divisions of a government laboratory, NIST, progressing to network application research and development at an Internet research laboratory, CNRI, a small open-source based web applications company, Zope Corp., and recently, independent web applications consulting.
My technical career has involved application development often accompanied by systems operations and maintenance - I often developed tools which I would use, along with others, for practical purposes. Many of those facilities were instrumental for effective community coordination and collaboration - including being useful for the development efforts, themselves, "eating our own dogfood".
I have extensive experience with:
- Python and dynamic-language-based systems development
- including Web, network, and standalone applications in Zope/Plone, interest in Pyramid and similar Web application servers and CMS, Mailman, issue tracking and other systems / project collaboration and coordination platforms, Emacs as an applications platform as well as programming environment
- including the full gamut of application development, including requirements analysis, design, constructions, deployment, maintenance, and evolution
- Linux and other Unix-like operating system administration and operation - maintenance, upgrade, integrate
- Plone content management system maintenance, installation organization, and upgrade (see Organizing Plone Installations)
- Maintaining and developing infrastructure - debug, upgrade, integrate, interconnect and custom tailor solutions
- Conducting teamwork and community engagement and coordination - tending to online commons for developers and other technical teams and artist groups, including not only devising tools but also conducting collaboration, providing guidance, framing policy, etc.
- I am passionate about making things run well, including cooperation and coordination between people, as well as operation of applications and systems I develop
Here are overviews of my main work threads, with links to relevant sections of my CV - which see for the comprehensive story.
Software Development and Integration
I am a seasoned software developer with extensive web and standalone application and systems analysis, design, and development experience and skill. I have experience designing, implementing, and supervising the evolution of widely used facilities.
Some of the facilities for which I was the or a key developer have been useful for many people in lasting ways. Examples include GNU mailman, many tools for the Zope Corp and community development collaboration infrastructure, and the software sharing Depot. I also have contributed extensions which have become part of GNU Emacs, including Allout. These are in addition to the infrastructure, research, and client work mentioned throughout my CV.
I've been involved in a broad spectrum of successful development collaborations, from solo and small-team efforts in customer and research projects to being a developer in and managing coordination of customer and internal development teams, to core and peripheral involvement in global open source development efforts.
That experience has entailed substantial involvement in web and standalone applications research, development, and operations, working solo and in a broad spectrum of successful collaborations. I've been responsible for the full range of the development cycle, from requirements analysis and project formulation to implementation, integration, management, maintenance, and ongoing evolution; participating as project member and leader using various development styles, including agile and classic processes.
Community Online Coordination
Without clear, constructive, and organized communication tools and practices, the benefits of online communications can be lost in overwhelming quantity. Over the course of my career, I have helped to facilitate collaboration, in technical communities and also among artists, with my personal participation as well as by developing and engaging online tools (some of which have come to be widely used). Fostering useful and constructive community collaboration is a central purpose driving much of my development efforts and my community participation.
Many of the duties and the facilities I've developed have been instrumental for effective community coordination and collaboration, including being useful for the development efforts, themselves - "eating our own dogfood". I typically have been centrally responsible for supervising the specific communities for which I built the tools, including launching and running python.org and the PSA while at CNRI, managing the internal and community collaboration processes while at Zope Corp, and acting as the coordinator and manager of systems support for the NIST AMRF.
My technical efforts similarly extend to artist/dance communities in which I'm involved. My application of these tools in those contexts provide other constituencies, different than technical professionals, to test and inform the usability of the tools.
My involvement using those tools as part of the communities, and tending to the coordination of those communities, deeply informs my work on the tools. In turn, communications skills that I've developed throughout the breadth of my involvements, including written and personal collaboration as well as crisp and clear project formulation and technical writing, are crucial elements that I bring to any work.
Platform Specialties - Python, Zope/Plone, Linux
I have been involved in many aspects of application and web programming, including process and network programming; GUI and web user interfaces; encryption, text processing, and much more. Much has been based in dynamic high level languages, particularly Python, and Python-based platforms - I was a key Mailman developer, I contributed to the core implementation of Zope and the Zope CMF, I devised some fundamental Zope and Plone debugging techniques, and contributed some fundamental Python facilities, including designing and prototyping the Python hierarchical package facility. I implemented several central Zope applications, including many of those used at the time by Zope Corp. for collaboration with their customers and community.
I also have extensive experience developing for and using the Plone content management platform. See Plone Application Development and Organization for details.
Systems Management and Operations
My technical career has involved application development often accompanied by systems operations and maintenance, often applying my coding skills to develop pragmatic tools which I would be using, on-the-ground. Early on, my time was dedicated to systems support, and I have since continued substantial systems maintenance in connection with the applications and facilities I developed and maintained. I have extensive experience with management of clusters of Unix-like systems, including many flavors of Linux, SunOS/Solaris, and some MacOS, for research laboratories, development facilities, and consulting clients. I also have deep experience designing and implementing successful systems management tools, complete networked backup applications, service operations sentinels, and other applications using Unix shell and "tiny" languages, as well as Python and systems languages.
Contact Improvisation and Ensemble Improv
My practice of Contact Improvisation and other movement improv provides a moving counterpoint to software development work. In addition to developing tools for communities of systems developers and other technical professionals, the CI community is a big focus of my efforts to support grass-roots community coordination and collaboration, specifically in the DC Contact Improv community and the East Coast Jam. I craft and maintain both of those facilities, as well as being a central organizer of and participant in the communities they support. That I am involved in these communities not just as a technician, but also as a participant, teacher, and performer, informs and illuminates the shape and quality of my technical efforts for them.
See details of my recent CI-related activities here.