Christopher Armstrong

Programmer

210 Highland Ave, Unit 1
Somerville, MA 02143
radix@twistedmatrix.com - +1 617 913 7416

Objectives
I have a few goals with respect to programming.
  1. Collaborate with other developers to improve human communication
  2. Make computing efficient and enjoyable
  3. Master programming
  4. Entertain
The first two of these goals require fundamental changes in our computing platforms. This is why I'm mostly interested in framework programming, and why I'm a developer for the Twisted project. I'm also involved in virtual world simulation and interactive fiction projects and interested in language and operating system design.
Current
Twisted Matrix Laboratories January, 2001 - present

Release Management and Software Development (volunteer)

I work with a team of developers on Twisted, an Open Source networking infrastructure. I collaborate with the team to design, implement, and review changes to many parts of the Twisted system, including the web application server, the chat service, the remote-object protocols, and the online world simulation framework.

I also manage releases of the software, which includes testing, developing packaging automation tools, and maintaining the twistedmatrix.com server.


Experience
Canonical Ltd March, 2006 - August, 2009

Software Development

Worked with a team of developers on Landscape, a system for managing deployments of many Ubuntu machines. I worked on the project since it started in 2006, and have designed and implemented major parts of the system. Technologies utilized were Python, Zope3, Twisted, Postgres, and others.

Among many other things, I worked on

  • the HTTP-based message queue, which provided a persistent and secure channel by which the clients and server could communicate
  • the various data-collection plugins in the client, which integrate tightly with various Linux systems
  • system management plugins in the client, such as the package and user management systems
  • the "ping server", which was a fast and secure HTTP-based mechanism for the clients to determine whether they should retrieve new messages from the server
  • Amazon EC2 integration, which allowed users of Landscape to treat EC2 VMs the same way they would treat a real machine on the user's network.
Nunatak Systems, Pty Ltd August, 2004 - February, 2006
Hobart, Tasmania, Australia

Software Development

Worked with a team of developers on the company's core product, a document management system for small to medium sized organizations. This product consists of a management UI written in PHP, a backend server written in Python utilizing Twisted and MySQL, and Zope/Plone Products for higher-level applications and customer-specific applications built on top of the document manager. I was involved in the maintenance of all parts of this system, and have done significant development on the Plone and Twisted-based code.

I was also the lead developer and maintainer of ConveyIT, a web application for facilitating easy electronic land conveyancing for Tasmanian solicitors and real estate agents. Initial development was carried out with a small team of 3-4 developers over 4 months, after which it was cut back to only myself unless major new developments were taking place. I also served as technical contact for the client, responding to support issues and implementing new features. Technologies utilized were Python, Twisted, Divmod Nevow, Divmod Atop, and OpenOffice.

Server Authority, Inc. November, 2003 - August, 2004

Software Development

Developed and maintained an anti-spam service with a small team. This involved protocol implementation, server infrastructure, and heuristics for deciding whether a given host is a spammer or not. Protocols involved were DNS and SIQ (Server Index Query). Technologies utilized were Python and Twisted.

Ypsilon.net AG November, 2003
Frankfurt, Germany

Training

Gave three full days of training to programmers at Ypsilon on the Twisted networking framework. Topics covered were protocol implementation, components, Deferreds, Twisted Cred, Perspective Broker, twisted.web, and XML-RPC.

Amy Thompson August, 2003 - October, 2003

Software Development

Implemented an automated test-running system to facilitate software testing at the Fresno County Office of Education. Technologies utilized were BuildBot and MaxQ, with improvements made to each.

Divmod August, 2003 - October, 2003

System Administration

Set up and maintained two servers running Debian GNU/Linux for the use of Divmod in the development, testing, and deployment of Quotient and other software. Maintained email servers (Exim), domain server (Twisted Names), CVS, Asterisk PBX, and various other services.

NASA STEP Testbed March 2003 - July 2003
Washington, DC

Software Development

Helped the team to design and implement the PanGalactic Engineering Framework. Integrated the repository (application logic and relational database) with various clients, including a Web UI and a GUI thick client. Technologies utilized were Python, PostgreSQL (relational database), Twisted's Woven (web framework), and wxPython (GUI toolkit).

Fresno County Office of Education December, 2002 - June, 2003

Software Development

Worked independently on a tool for validating digital coursework data files. The GUI tool ensures that files in a wide range of formats meet the quality standards of the Office of Education. Technologies utilized were Python, Twisted, and Tkinter.

Multimedia Institute September - December, 2002
Zagreb, Croatia

Software Development

Worked with a team of developers on an open source, component-based Content Management/Wiki System. Redesigned the initial version to utilize Twisted's web MVC framework, Woven.

NOVA Chemicals Corporation July, 2001 - August 2002
Pittsburgh, Pennsylvania

Web Development

Designed and maintained web sites for the company intranet and Internet, gave support to other Web Designers within NOVA, and explored enhancements to the navigability of existing web sites. Technologies utilized were HTML, Javascript, Python, and ColdFusion.


Publications

Getting Twisted - An article I wrote professionally for PyZine. It is a general introduction to implementing a protocol with Twisted. The article is available on the PyZine web site.

Releasing Large Python Projects - I gave a talk at PyCon 2003 about the Twisted release management process. The slides are available on my web site.


Minor Projects
  • I am involved in the interactive fiction community. I run the Planet Interactive Fiction blog site and contribute to the Inform 7 project.
  • I implemented two different Lisp-like languages: one compiler and one interpreter. The compiler was for an experimental syntax that attempted to bring some of the niceties of Python's syntax to the Lisp language. It compiled to Python bytecode. The interpreter was an experiment in restricted execution environments, and was written in Python.
  • I wrote a graphical mind-mapping application named Infogreater.

Skills
Programming Languages
  • Python
  • Lisp and Scheme
  • Some C
  • Some Haskell
  • Some PHP
Operating Systems
  • Ubuntu Linux
  • Debian GNU/Linux
  • Windows NT, 2k, XP, Vista

Interests
I'm interested in interactive fiction, virtual world simulations, Wikis, education, content management systems, programming languages, operating systems, the mechanics of abstraction, and debate. More information on these subjects is available on my website, http://radix.twistedmatrix.com/.