I want to do my best work. That means finding a place where:
With ten years of experience in a variety of situations and working with many systems and environments, a complete list of skills is difficult. Some particular skills:
Python: my primary programming language, I have used it for a wide variety of tasks and I have written many popular open source libraries.
Javascript: while seldom the primary language for projects, I have considerable experience, and don't shy away or avoid Javascript.
HTML: though I am not a designer, I have considerable experience with parsing, scraping, and manipulating HTML (exemplified in lxml.html and Deliverance).
HTTP: I've read the HTTP/1.1 spec multiple times and in WebOb and other libraries have encoded that knowledge in libraries. This gives me a strong basis for REST, WebDAV, and other HTTP-based technologies.
Google App Engine: I have produced libraries for App Engine, my code is included in App Engine (WebOb), and I have written code that is included in the base system (httplib).
PHP: though not a preferred language, I have read and modified PHP applications in many situations when it was the appropriate or most expedient solution to a problem.
August 2006 - January 2010. Senior Developer, The Open Planning Project, New York.
Projects have included:
- Developed a tool for managing cloud deployments and application deployments in the cloud, toppcloud.
- Created a build system for a core software project, allowing repeatable deployments and consistent development across all the programmers.
- Editor of the group blog, The Civic Hacker
- Adoption and adaptation of a product, Deliverance, for website theming and integration among disparate projects. This included documentation, advocacy, and presentations around this project.
- Tool development and support for other programmers, including pip and virtualenv
November 2003 - July 2006. Senior Programmer, Imaginary Landscape Web Design, Chicago IL.
Reporting directly to the company partners, my duties and initiatives have included the following:
- Produce and deploy applications for a variety of customers.
- Responsible for design, implementation, and continued enhancement of an in-house content management system.
- Develop, maintain, and resolve bugs for serveral core projects.
- Responsible for the maintenance of several legacy projects. Provide advice and guidance about the future direction of these projects and their continued maintenance and evolution.
- Initiate and provided guidance in the use of company-wide source versioning control and bug tracking system.
- Performing code review of other programmers' work.
- Proofread project proposals for technical consistency and feasibility.
- Write and edit specifications and requirements.
- Provide time estimates for projects and potential functionality tradeoffs.
- Evaluate software products and development environments for company and client use.
- Introduced new technologies, among them Paste, a Python web programming framework, and the adoption of Zope Page Templates. Transitioned the company from Zope to Webware to Paste WebKit.
- Developed a new deployment system, including management techniques for supporting diverse dependencies in isolated environments.
- Write documentation, both application code documentation and documentation on company-wide coding standards.
- Database design, evolution, programming access abstraction, performance optimization and debugging, and installation maintenance. Primarily using PostgreSQL.
August 2000 - January 2002. Programmer, Fitzroy Dearborn Publishers, Chicago IL (In 2002 Fitzroy Dearborn was acquired by another publisher and dissolved)
- Programmed and maintained extensive online collaboration system to receive comments from authors, advisers, and off-site staff on articles.
- Administered intranet server which hosted above program, mailing lists, FTP sharing accounts, and a connection with the Windows NT server.
- Redesign and restructuring of the editorial website.
Software projects I have created (some listed more than once when they fit into multiple categories); I've contributed to other projects, but each of these is something I've authored:
Paste core
PasteDeploy
PasteScript
toppcloud
WebOb
weberror
WebTest
Deliverance
FormEncode
DevAuth
EmailIt
FlatAtomPub
OHM
TaggerClient
TaggerStore
VaingloriousEye
WaitForIt
WSGIFilter
WSGIOverlay
WSGIProxy
wphp
HTTPEncode
PoorMan
RhubarbTart
Wareweb
CherryPaste
DjangoPaste
TracPaste
Deliverance
lxml.html
PickyWiki
wikistorage
Commentary
doctest/js
htranscluder
hReviewCollector
hReviewParser
PageCollector
PageSplitter
scrapy
Twill/Javascript
WebClippy
ScriptTranscluder
EmailIt
HTConsole
ScriptTest
WebTest
MiniMock
dtopt
FitLoader
Twill/Javascript
appengine_monkey
PickyWiki
wikistorage
css2xpath
pip
virtualenv
toppcloud
workingenv
SQLObject
INITools
Tempita
FormEncode
PasteScript
ScriptTest
fassembler
CmdUtils
LogAnalyze
ObConfLoader
CheckURL
(I still need to compile a list of products and projects implemented at The Open Planning Project)
Major products and projects implemented at Imaginary Landscape:
Some talks and presentations I've given:
Testing with py.test (a unit testing framework).
Packaging with Setuptools, a quick introduction to a packaging system.
SQLObject and Database Programming in Python
One Laptop Per Child - an overview of the project, given at UniForum Chicago
There's some other stuff in my Subversion home directory.
Towards A New Self-Definition Of Open Source
Not yet presented, but I am again an invited speaker, and will be speaking on The Subject Of Source Code.
Invited talk: Topics of Interest
HTML Processing in Python (slides not available, but there is a retrospective post, a post on HTML accessibility, and most substantive a post on HTML parser performance)
Using Deliverance To Theme A Website
Building Pluggable Software with Eggs
All about web programming (except programming). Steve Holden wrote up a summary as well.
SQL-API, a lightning talk about the SQL-API project.
WSGI Middleware and WSGIKit; my main presentation. WSGIKit was renamed to Paste.
Why Web Programming Matters Most (which I didn't get to present, but then posted about on my blog)
A Simple Metaclass (which also became a post)
Dealing with stale code in
long-running processes Webware's Shotgun Approach
This is from a lightning talk. This pattern has been ported from Webware to Paste (by myself), Django, and CherryPy.
PyLogo: the Logo Language
implemented in Python
From a lightning talk, a very brief introduction to
PyLogo.
The Web
Framework Shootout
Out of date, but just for the record.
The majority of my writing takes place on my blog at blog.ianbicking.org, and can be browsed through the archives. Some popular articles have been:
Earlham College, Richmond IN, 1995-1998
BA, Computer Science and Mathematics