Cornwall, United Kingdom
I am an experienced software developer, team leader and thinker with a passion for maximizing access to the information that empowers individuals and groups to get things done. I'm a vocal advocate of open protocols, open source, and the open web. I create tools that allow people to create, share and synthesize information on the web so they can learn and collaborate.
- Strong social and technical leadership by example.
- Project, product, team and community management.
- Synchronous and asynchronous distance collaboration and collaborative tools.
- Agile and open source methodologies.
- Requirements gathering and systems analysis.
- Design and development of REST-oriented HTTP APIs.
- Automating build, testing, deployment and monitoring of distributed systems.
- Information architecture, classification theory and categorization.
Principal Software Engineer, Mirantis
December 2015 - Present
Participate in the design and development of Nova, the OpenStack compute service.
- Led the API working group to create guidelines for improving the consistency, correctness and stability of the OpenStack APIs.
- Created the Placement HTTP API service for tracking inventories and allocations of consumable resources (e.g., disk, virtual CPUs, memory) used in making scheduling decisions.
- Leader in the Nova scheduling subteam, directing the integration of existing Nova scheduler tools with the new Placement service.
- Consistently in the top ten (of greater than 300) contributors (commits and code reviews) to the Nova project.
- Mentored other developers within Mirantis and the wider OpenStack community.
Senior Software Engineer, OpenStack Telemetry, Red Hat
May 2014 - November 2015
Core member of the OpenStack Telemetry project, Ceilometer. Ceilometer provides services for measuring and monitoring resources in an OpenStack cloud and is an integral part of Red Hat Enterprise Linux OpenStack Platform.
- Improved Ceilometer presence in testing and continuous integration tools (devstack, grenade, tempest).
- Contributed to the API Working Group to set guidelines for consistency in all the OpenStacks APIs.
- Created gabbi (listed below), a tool for declarative testing of HTTP APIs, and used it to vastly improve test coverage and readability.
- Initiated project-wide decomposition of monolithic service into independent but cooperating services leading to improved maintainability and flexible use.
Director and Principal Developer, Peermore
December 2007 - April 2014
Peermore Limited is a consulting, systems design and development company. Peermore specializes in using the software and social techniques of the internet to allow groups of people and computers to see more, connect more and understand more.
- Osmosoft, the open source innovation group at BT, architecting and implementing TiddlyWeb and TiddlySpace (listed below), leading the design of web applications, consulting on business process improvements and mentoring a team of remote and on-site web and open source developers.
- Avox, developing wiki-data: "an open, extensible, linkable repository of company information".
- Dr. Thomas + Partner, enhancing their TiddlyWeb-based customer documentation and knowledge base system.
Senior Developer, Information Access, Socialtext
September 2004 - December 2007
Senior developer building Perl-based wiki software for small to medium enterprises. All members of the development team worked remotely while effectively using agile technologies such as pairing, stories and the planning game.
- Achieved order of magnitude performance improvements through a combination of code re-architecture and detailed profiling.
- Enhanced Atom and RSS syndication capabilities.
- Implemented SOAP API for Sharepoint-specific interoperability.
- Led the team that built an HTTP API allowing interoperation with everything else.
- Developed low bandwidth version ("miki") for effective use on mobile and limited connections.
- Created "Socialtext Unplugged" pairing TiddlyWiki with the HTTP API for offline use of the Socialtext wiki.
- Rationalized release management enabling concurrent feature development and rapid deployment.
Developer, Indiana University
2003 - 2004
Part of a small team of developers maintaining and enhancing the Indiana University Knowledge Base (KB): A self-service computing support resource for the members of the university community and a content management system for IT documentation.
- Utilized techniques developed at Blue Oxen to create an information management system used by the distributed development team to streamline development processes.
- Wrote the SOAP backend and WSDL to enable enterprise systems to interact with the KB.
Co-founder, Blue Oxen Associates
2002 - 2004
Co-founder of a think tank dedicated to researching and implementing high performance collaboration.
- Created the Blue Oxen Way of evaluating and encouraging collaboration.
- Developed Purple Numbers and Purplewiki, adding granular addressability and transclusion to the wiki environment.
- Facilitated online "collaboratories" exploring how to bring the ideas of Doug Engelbart into the mainstream.
Director - Systems, Kiva Networking
1997 - 2000
Manager of a team of five system administrators at a statewide internet service provider during a period of significant growth and capitalization.
- Oversaw the evolution from a fully manual to fully automated system for creating and managing users, user accounts and user services.
- Migrated from multiple services on single server model to single services on single servers.
- Developed a secure, distributed task automation infrastructure for managing those services.
- Created a mod-perl driven environment for the management and presentation of a local newspaper's web presence.
Messaging and Networking Specialist, Indiana University
1995 - 1997
Member of the team that managed the SMTP, DNS and NNTP services for the students, staff and faculty of the university.
A sampling. See GitHub for more.
2014 - Present
Declarative HTTP testing.
Creator of a tool for running tests of HTTP APIs where requests and responses are represented in a declarative YAML-based form.
2008 - Present
The canonical HTTP API for tiddlers: small chunks of content on the web.
Project originator, lead and community manager for a WSGI-based Python application originally created as a reference server side for TiddlyWiki; TiddlyWeb has since evolved into a robust generic content and data store with a pluggable architecture allowing multiple representations and storage systems.
2010 - 2013
A discoursive social model for tiddlers.
2003 - 2004
A derivation of the Perl-based UseMod wiki implementing Purple Number based granular addressability of content on wiki pages and transclusion of content between wiki pages and other systems.
Master Information Science, Indiana University
2001 - 2002
Effectively interspersed a course in HCI and information representation and retrieval with a general overview of computer science. Of special note:
- The Computer As Tool, a paper exploring task and tool orientation in human computer interaction.
- A Java Software Engineering course which began with a review of design patterns and ended with a grueling refactoring of the KnownSpace kernel and the implementation of the Helium UI over the kernel.
Inverting the Social Web with Internet Banks of Content
The fundamental concept in an Internet Bank of Content (IBOC) is that rather than giving a piece of sociable content to a web service, a participant in the social web would upload or locate that content in their Bank and provide a URI to the service, called a presentation service. The bank holds the content in trust for the individual.
TiddlyWeb: HTTP for Tiddlers
Describes the lessons learned while developing TiddlyWeb as a resource oriented HTTP API.
The Computer as Tool: From Interaction To Augmentation
Describes a design approach wherein computers and computer applications are thought of as tools rather than interactive devices. This paper was instrumental in forming the Blue Oxen Way, a framework for a philsophy of collaboration.
Creating Conceptual Access: Faceted Knowledge Organization in the unrev-ii email archives
The email archive of the unrev-ii list is the basis for this ongoing project, to build an access tool for an email archive that also functions as a knowledge repository.
Hypertext and Knowledge Enhancement
A fun and rambling exploration of hypertext and knowledge enhancement driven by a hypertext tool specially created for the project.