Christopher ArmstrongProgrammer
Somerville, MA 02143
*****@*************.*** - +1-617-***-****
Objectives
I have a few goals with respect to programming.
Collaborate with other developers to improve human communicationMake computing efficient and enjoyable
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
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
server.
Experience
March, 2006 - August, 2009
Software Development
Worked with a team of developers on, 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 systemssystem management plugins in the client, such as the package
and user management systemsthe "ping server", which was a fast and secure
HTTP-based mechanism for the clients to determine whether they should
retrieve new messages from the serverAmazon 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.
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.
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.
November, 2003
Frankfurt, Germany
Training
Gave three full days of training to programmers at Ypsilon on
the networking
framework. Topics covered were protocol implementation,
components, Deferreds, Twisted Cred, Perspective Broker,
twisted.web, and XML-RPC.
Amy ThompsonAugust, 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 and, with improvements made
to each.
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 and other
software. Maintained email servers (Exim), domain server (Twisted
Names), CVS, Asterisk PBX, and various other services.
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).
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.
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.
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 . It
is a general introduction to implementing a protocol with
Twisted. The
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
are available on my web site.
Minor Projects
I am involved in the interactive fiction community. I run the blog site and contribute to the 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
Operating Systems
Debian GNU/LinuxWindows 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/.