Curriculum Vitae
+1 202 525-6260
1726 B Corcoran Street, NW
Washington, DC 20009-2406
Project Skills
Application and systems design, development, integration, and operation.
Extensive experience with solo, team, and open-community development, leadership, and client/customer liaison. Strong technical and communication skills and interests, collaborating and coordinating as a participant and/or leader.
Extensive development experience of web and stand-alone applications, based on Python and Zope/Plone, HTML5//javascript/CSS/HTML, cooperative content management and coordination, and networked Unix/Linux.
Comprehensive networked Unix/Linux systems management and development, with mixed-systems (MS Windows, other) interoperation.
Languages and Development Technologies
- Python; Lisp; Pascal; etc.; C; Unix shell, awk, and tiny languages, regexps; DOS batch; some SQL and non-relational database query languages
- Contemporary programming techniques and practices - object-oriented, event-driven, remote delegation, RPC, component architecture, RESTful, agile development, UML, requirements analysis, test-driven development, etc., various source code version control systems (mostly Git, previously lots of CVS, some Bazaar)
- Best practices and innovative operating systems management, informed by extensive systems scripting and programming experience
Platforms
- Extensive Network and Web application and infrastructure development - HTML/XHTML, CSS, Javascript/DOM, jQuery / AJAX, Backbone/underscore/backstack; npm, grunt, bower; mocha, chai, sinon; Python, WSGI, Zope, Plone; RSS/Atom; low-level sockets, kerberos sockets, CORBA (ILU), etc; Google Analytics
- Unix/Linux - Ubuntu, Gentoo, RedHat/Fedora/CentOS, MacOS X, SunOS - use as a development platform and networked systems administration and development; Apache and other web servers; DNS/named; iptables customization;
- MS Windows - 2000, XP, Vista/7 - some as a development and server platform, much reliance on GNU tools, via Cygwin, etc.
- Personal and some enterprise virtualized operations - VMware, VServer, Virtual Box
- Emacs as editor and platform
- Graphics editors - SVG/Inkscape, Google SketchUp, various paint and design tools
Experience
Click on items ending with a '◊' lozenge for more details...
SpiderOak Software Developer
April, 2012 to Present
Independent Consultant, Plone-based Content Management Systems
October, 2004 to 2012
Miscellaneous independent and customer projects, primarily based on Plone, and provided ZEO-based Plone host provisioning and maintenance. See Plone Application Development and Organization for an overview of Plone-oriented services I offer.
-
- Developed and operated several grass-roots community and a few corporate websites.
- Including the full gamut of development, integration, and operation, including building and upgrading custom enterprise (ZEO) Plone sites, custom theming, some custom add-on applications, third-party add-on integration and migration across Plone 3 and Plone 4 versions. I can no longer share links to my commercial client sites. For examples, see these community and personal sites: http://eastcoastjam.com and http://myriadicity.net/ci36 [now a static site], and my personal site, http://myriadicity.net, including the DC-CI community site, http://dccontactimprov.net.
-
- Took over development and maintenance of Plone Products.remember membership-as-content addon, for use in community sites (like the above) that need, eg, membership procedural workflows that can be tailored to the situation. Did major upgrades and feature integration, including some architectural changes.
- Including fixing bugs and migrating from Plone 3 compatibility to Plone 4 and Products.membrane version 1 to version 2, and migrating repository to github. See my Products.remember commit record for details.
-
- Commissioned and administered Linux-based (Fedora, CentOS 4 and 5, Ubuntu LTS) dedicated project host platforms.
- Did full gamut of service to sustain internet-hosted systems (Server Beach/Peer 1, Dream Host) for client and self, including commissioning, configuration, and operation of operating system, Web, DNS subsystems, automatic blacklisting and custom iptables, vendor and third-party backups, some virtual server provisioning, etc., for operating environment in which I implemented Plone websites and other services.
-
- Early adopter and refiner of Plone's integration of Zope Blobs for client projects, including developing guidance
- for other early adopters and feedback for developers. Get much better acquainted with Plone build process (buildout, etc) and techniques for removing deeply embedded addons - like blobs - as well as tending to the rapidly changing enhancement.
Other Interests
Also 2004 to present
-
- Developed designs for a speculative project, Organizing Connections, aimed at organizing and extending online collaboration across various kinds of boundaries, from those of technical platforms to enterprise organizational divisions.
-
- Extended my recreational involvement in Contact Improvisation and ensemble movement improv with practice, organizing, teaching, and performance
- See Contact Improv and Ensemble Improv for my recent activities.
Zope Corporation, Fredericksburg, VA
Senior Developer - January, 1999 to October, 2004
Contributed to core Zope development, Customer and community projects, and internal and community collaborative development and operational infrastructure.
Customer Projects
-
- Boston.com System design contributor, core developer and internal/client development teams coordinator, for a high-profile daily-news online organization's publishing workbench. Implemented a Zope-based public chat system for client as a trial project.
http://www.zope.com/zopecom/customers/case_studies/bostoncom.html, http://www.zope.com/zopecom/products/zope4media_print.html - Participated in requirements gathering, project formulation, design, and implementation of a daily-news publishing workbench for boston.com. Extensive content architecture, workflow coordination, and UI. Also coordinated Zope Corp. and customer development teams. The result is the basis for Zope's "Zope for Media/Print" product (http://www.zope.com/zopecom/products/zope4media_print.html).
- Helped develop client requirements gathering, architectural designs, extensive content types development, UI development, performance scaling, javascript and content-types integration, and was responsible for coordination collaboration between client's developer team and our internal team. In addition to publishing workbench, also designed and implemented Zope-based public chat system (for, eg, boston.com subscriber real-time forums for handyman column discussions, post-sports event debriefs, etc.).
- Boston.com System design contributor, core developer and internal/client development teams coordinator, for a high-profile daily-news online organization's publishing workbench. Implemented a Zope-based public chat system for client as a trial project.
-
- CyberCamp - Designed, implemented, and delivered collaborative workbench for through-the-web production of elaborate online learning adventures.
http://www.zope.com/zopecom/customers/case_studies/usda_cybercamp.html - Designer and developer of a system for collaborative production of on-line nature-scenario adventures. Created an extensible adventure-path composition language with simple logic and state, including conditional branching and sharable elements and templates, and a comprehensive, through-the-web graphical adventure-path builder. The system supported collaboration between widely distributed producers, artists, and programmers.
- CyberCamp - Designed, implemented, and delivered collaborative workbench for through-the-web production of elaborate online learning adventures.
-
- ZapMedia - Project manager, customer liaison, and development team member - designed and built a public portal for a commercial dedicated multimedia delivery platform.
- Developed a public portal site for customer's media/entertainment system users. Helped to formulate the project requirements and structure with the customer, and served as coordinator between Zope Corp and ZapMedia developers, as well as participating as a core developer in project implementation.
- For this project, devised and implemented a mechanism for progressively organizing Wikis to provide a manageably organized, evolving project coordination knowledge base. This came to be used widely for Zope Corp customer projects and in the Zope community. Also implemented the original version of a Zope debugging facility which served as the basis for the zope ctl debug command - see Zope Debugging, below.
-
- Zope4Edu - Contributing developer for university content collaboration system. Designed and implemented RSS-based department-spanning content synchronization.
- Implemented CMS RSS-based syndication mechanism, extending content types across enterprise - in-place updates and freezing, content-specific metadata, etc, as well as contributing to general development of Zope4Edu.
-
- Zope Registration Manager - Contributing developer, designed and implemented Zope+javascript+CSS client-side validating forms infrastructure for commercial radio high-volume customer promotions registration system.
www.zope.com/customers/case_studies/viacom.html - Contributed to architectural design of high-volume promotional website registrations (public contests, surveys, etc.), and designed and implemented Zope+javascript forms infrastructure. Devised a Zope template-based javascript widgets scheme with client and server-side validation. Used in Viacom project, among others.
- Zope Registration Manager - Contributing developer, designed and implemented Zope+javascript+CSS client-side validating forms infrastructure for commercial radio high-volume customer promotions registration system.
Implemented and Administered Zope Corp.'s Collaborative Development Infrastructure
Managed the collaboration infrastructure used for Zope Corp.'s internal, customer, and community projects, and developed most of the facilities on which it was based:
-
- Issue collector - Designed, developed, and deployed issue tracking systems, the Zope Issue Collector, used for most customer and community projects during my tenure and beyond
- Designed and implemented the Zope project issue Collector, and its predecessor the Tracker. The Collector was a bug and issue tracking system used by Zope Corp for internal projects, customer projects, and coordination with the larger Zope developer community from 2001 through 2006, well beyond my tenure at the company.
- At peak, the community used around 15 to 20 collectors for as many Zope-related core and incidental development projects. A typical Zope Corp. customer project would have at least one collector, with affiliated mailing lists, and a joint development project, involving a Zope Corp. team coordinating with customer developer team, would involve three or four collectors, a few mailing lists, and a development ZWiki with my organizational enhancements (see below).
-
- Structured Wikis - Devised, implemented, and deployed Zope-based Wiki organizability enhancements, used as basis for collaboration medium in customer and community projects - http://zwiki.org/WikiStructuringIdeas
- ZWiki was used as part of Zope Corp's internal and customer development coordination platform, and the Zope developer Community's collaborative "fishbowl", from 2000 through 2006 and beyond. Use of ZWiki enhanced by my organizability features, along with the collectors and CVS provisions (below), were long-term key ingredients in the Zope Corp. and zope.org development process. My ZWiki organizability features, http://zwiki.org/WikiStructuringIdeas, were adopted in ZWiki as a crucial element.
-
- CVS and Mailman check-in mailing lists - Deployed, extended, and coordinated source code collaboration facilities, another key part of customer and community collaboration facilities, including provisions to couple them with check-in mailing lists organization
- I engineered Zope Corp's CVS setup, which was used for 6 or 7 years until replacement with Subversion. This arrangement was used throughout Zope Corp's internal, customer, and developer community projects, from 2000 through 2006. Enhancements beyond conventional CVS capabilities included secure, scalable assignment of write privileges to customer and community collaborators; intricate sharing of repository structure across projects, controlled by CVS-managed config files, informative checkin notifications that respect the sharing scheme, and more. This enabled intricately interleaved and very extensive multi-project development that was impossible using CVS without my elaborations (and a reason that other version control systems have been necessary).
-
- Developed and published Zope and Python debugging techniques and tools. See Conversing With Zope.
- Helped to develop the server control script that served as the basis for Zope and Plone instance and cluster control scripts since. Devised and implemented a 'debug' command for server and ZEO-client instance interaction via a Python shell prompt. Reported on techniques that use this in a paper I delivered at the 2003 Python conference. My Emacs extensions for automatically tracking python debugging sessions have been incorporated in Emacs standard Python mode, and the debugging facilities and techniques are at the core of much Zope and Plone debugging.
- Commissioned, administered, and developed some of the remote-hosted Linux OS environment on which we ran these client and community Zope and collaboration facilities.
Corporation for National Research Initiatives, Reston, VA
Member of Technical Staff - September, 1995 to January, 1999.
Participated as researcher and developer in network and programming research projects, and instituted and maintained central Python community resources.
Also responsible for initiating, maintaining, and conducting the early global Python community, establishing and running python.org and the Python Software Activity, and developing the Mailman mailing list manager.
Research Projects
-
- Knowbot Operating Environment mobile-agent research infrastructure - Contributed to the technical design and implementation of the KOE, and implemented some prototype applications.
http://www.cnri.reston.va.us/home/koe - Contributed to the design and development of the KOE, including the system architecture and implementation as well as devising and developing prototype applications. We used ILU Python interfaces to employ CORBA in Python for system and network architecture. Prototypes I created include demo "scout" knowbot - debugging tool by which operators can maneuver a knowbot agent between KOE stations and interact with the conditions at each station - and a rudimentary auction system and demo bidding agents, to experiment with the dynamics of automated-agent auctions.
- Knowbot Operating Environment mobile-agent research infrastructure - Contributed to the technical design and implementation of the KOE, and implemented some prototype applications.
-
- Application Gateway System, a load-balancing server-farm management system - contributed to implementation, including implementing kerberos-secured management infrastructure.
http://www.cnri.reston.va.us/AGS - Contributed to implementation of the AGS, including a management/host secure communications channel based on kerberos-secured network sockets. Also participated in the overall design and implementation of the AGS.
- Application Gateway System, a load-balancing server-farm management system - contributed to implementation, including implementing kerberos-secured management infrastructure.
-
- Grail, an extensible Internet browser with Python applets - Contributed to design and implementation, including the configuration infrastructure and UI.
http://www.cnri.reston.va.us/grail.html - Participated in the overall design and implementation of Grail and Grail applets, I specifically implemented the application configuration framework, getting acquainted with general user interface design and implementation for the framework using Python's tk extension, PyTk.
- Grail, an extensible Internet browser with Python applets - Contributed to design and implementation, including the configuration infrastructure and UI.
Python and Python Community
While at CNRI I was employed to spend up to 50% of my time working on Python community resources, specifically the PSA and python.org.
-
- Python Software Activity - Helped to establish and ran the PSA and python.org, including everything from engaging and gathering grass-roots community connections with Python-invested developers and businesses to commissioning, administering, and developing the Linux host platform and Python facilities for the informal organization's Web and network services.
-
Played key roles in the Python community, establishing and running python.org, from it's inception in 1995, and helping to create and manage the Python Software Activity, the precursor to the Python Software Foundation, up my migration to Zope Corp. (at the time, "Digital Creations") in 1999.
-
- Mailman - Resurrected a prototype that was languishing and developed it to production quality, employing it for extensive use on python.org and for local CI community. Mailman was soon after adopted as the GNU mailing list manager, and has come to very widespread use throughout the world.
- Resurrected a languishing prototype of the mailing list manager and developed it to production quality and widespread use, to v 1.0b4 and further. See My Mailman Role for details.
National Institute of Standards and Technology (NIST), Gaithersburg, MD
Systems Engineer - September, 1992 to September, 1995
Network Engineering Group
As part of NIST's central Network Engineering Group, managed a site-wide file-sharing service and supported other network service efforts.
Systems Engineer, Factory Automation Systems Division
July, 1985-September, 1992
-
- Technical lead of systems and programming environment, directing Unix support by four-member team for the AMRF, growing from 4 Sun workstations to around 15 file servers and 40 to 60 researchers and over 100 Sun and assorted other Unix workstations. Developed and maintained custom operations software.
- Implemented sharing and operations infrastructure, including developing custom high-capacity backup, customized network call-center support (Project Athena On Line Consultant), the "Depot" software-installation sharing scheme for sharing software installations across departmental divisions, and generally scaling organization and maintenance of an Unix enterprise cluster of systems.
-
- HCSE programmer - developed factory automation measurement station logic and UI using extended finite state machine programming (HCSE) for emulation and control in an automated manufacturing research testbed.
- Used experimental DARPA systems programming language designed especially for control and communications programming, PRAXIS, precursor to ADA.
-
- Devised and lead collaboration to develop a means to easily share software installations across enterprise organization and system architecture boundaries - The Depot
- I initiated a scheme, using network mounts and systematic organization of software installations, to share maintenance of software installations across enterprise departments, and collaborated across departmental divisions to develop and shake out the scheme. We published a Usenix paper about it, cited below. The paper was distinguished as part of a selective collection of network and system administration papers.
NIST Python Workshop, November 1994
Collaborated with Guido van Rossum and Michael McLay to organize the first python workshop in the US, ran the software management session and designed and prototyped hierarchical Python imports (packages) and proposed Python docstrings, both of which became part of Python.
http://www.python.org/workshops/1994-11/annotated.html
http://www.python.org/workshops/1994-11/sftwr-mgmt-report.html
Emacs Allout
While at NIST I also became familiar with Unix and the GNU tools, including GNU Emacs. I developed and contributed a few Emacs extensions which have been distributed as part of Emacs since then, including Emacs Allout, which I continue to actively maintain and use.
Collaboration and Community
From serving computer users, Zope and Python online communities, and regional contact improvisation groups, to developing systems that support online cooperation, collaboration informs the way I work. I am driven to foster the benefits of collaboration by developing tools and cooperating constructively with people who are similarly motivated.
Publications
- Conversing With Zope - A paper I presented, on Zope debugging tools and techniques, at PyCon DC 2003.
- System Support for Mobile Agents - Jeremy Hylton, Ken Manheimer, Fred L. Drake Jr., Barry Warsaw, Roger Masse, and Guido van Rossum.
In Proceedings of the 5th International Workshop on Object Orientation in Operating Systems (IWOOOS '96), pages 8-13, Seattle, Wash., October 1996. - Mailman - An Extensible Mailing List Manager Using Python [pdf] - Ken Manheimer, Barry Warsaw, John Viega.
Proceedings of the Seventh International Python Conference, October 1998 (Conference listing) - Mailman: The GNU Mailing List Manager - John Viega, Barry Warsaw, Ken Manheimer.
In Proceedings of the 12th Usenix Large Installation Systems Administration Conference (LISA '98), December 1998. - The Depot: A Framework for Sharing Software Installation Across Organizational and Unix Platform Boundaries [pdf] - Ken Manheimer, Barry Warsaw, Stephen Clark, and Walter Rowe
In Proceedings of the Fourth Usenix Large Installation System Administration Conference (LISA IV), pages 37-46, October 1990. The paper was published in the Usenix SAGE Selected Papers in Network and System Administration, and is available as a US DOC NIST publication.
Other media presence
- Library science interview: An Interview with Paul Everitt and Ken Manheimer of Digital Creations, publishers of Zope
- NewsForge personality profile: Feasting on life with veteran programmer Ken Manheimer (NewsForge is offline)
Education
BA, Computer Science, Hampshire College January, 1982, Concentration in computer languages
Professional Organizations
Acting nominated member of the Python Software Foundation; National Dance Education Organization Institutional Member
References available on request