Ian Bicking
1535 W. Leland Ave.
Chicago, IL 60640
(773) 275-7241 (no recruiter calls, please)
ianb@colorstudy.com
ianbicking.org
Note: I am not currently looking for a job. I am really not looking
for a job. If you don't know me and I don't know you, then there is a 99.9%
chance that I'm not interested in any job positions you have. Save us both
some time.
None. I'm cool with what I'm doing right now.
August 2006 - present. Senior Developer, The Open Planning Project, New York.
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.
- July 2000 - November 2003, Independent Consultant, Chicago IL
- Working for a variety of clients on web development projects, both
subcontracting and direct consulting. Typical jobs have included
both design and implementation, starting from defining
requirements and continuing through maintenance.
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.
- October 2000 - January 2001, Programmer, Norphans.com, Chicago IL
- Programming and web page design for online toy company, using PHP
and MySQL.
- November 1999 - April 2000, Distributed Support Services Consultant, Northwestern University, IL
- Provided phone and on-site support for faculty and staff.
- June-August 1999, Computer Instructor, Bloomington Public Schools, MN.
- Designed and led a class in web design for students, grades
5-8. Led adult volunteers. Supervised computer use in after-school
program.
I've authored many open source projects:
- SQLObject; a popular object-relational
mapper, used in TurboGears, Zope, and
other applications.
- SQLObject2 and sqlapi, a reimplementation of SQLObject,
and a complementary library to bring database access to a higher
level.
- FormEncode (and FunFormKit before it); a form validation
system, used in TurboGears and several
other projects.
- Paste, a set of WSGI tools:
- Paste core; generic WSGI tools (includes an advanced debugging
tool).
- Paste fixture; a simple
system for doing acceptance testing on WSGI applications.
- Paste Script; a framework for
creating scaffolding scripts. Also a simple app server.
- Paste Deploy; a configuration
system for composing WSGI applications and middleware.
- Paste WebKit; a
reimplementation of the Webware API for WSGI.
- WSGIRemote; a web client / RPC /
REST client with special WSGI integration.
- WSGIFilter; a framework for
building output-filtering WSGI middleware and HTTP proxies.
- WPHP; runs PHP in a subprocess with
FastCGI communication to make it look like a WSGI application.
- Paste integration with:
- Commentary; a system for
commenting on web pages interactively; largely implemented in
Javascript.
- PyLogo; an implementation of the Logo
language using Python, and integrating with the Python object model.
- HTConsole; an
interactive web-based console, with advanced features for
representing Python objects as HTML.
- workingenv; a
script for creating environments that are isolated from the global
Python installation (and site-packages in particular).
- Webware Components; a
system for mixing in multiple pieces of functionality into Webware
servlets.
- Webware LoginKit; a component
that adds authentication to Webware servlets.
- Webware ZPTKit; a component that
adds Zope Page Template rendering.
- INITools; a simple set of tools
for parsing .ini files, and building higher-level parsers on top
of that.
- FitLoader; mostly a parser
for CSV and Excel files, to then feed the data into tests.
- Twill/Javascript; an
implementation of the Twill in Javascript,
similar in spirit to Selenium.
- Javascript Doctest, a Javascript
testing system inspired by Python's doctest
- A Wiki, written for Webware.
- FileBrowser, an Ajaxy
through-the-web file management application, using Prototype.
- Wareweb, a web framework, meant
as an updating of the Webware API. PoorMan was an aborted
attempt to go further with the WSGIfication of it all.
- Javascript repeating form library (based on
WHAT-WG Web Forms
- Apache Logfile analyzer.
- ComfyEdit, a very old
project that edits HTML pages on disk.
- Tcl->Scheme, a
translator from the Tcl language to the Scheme language.
- Logo->Schema, a
translator for Logo to Scheme.
- HyperQuiz, a
HyperStudio stack for giving quizes.
- Misc. experiments, a
directory of small coding recipes.
Projects I've made major contributions to:
- RhubarbTart, a web framework.
- Webware, also a web framework.
- Kid, a templating language.
- Pudge, a documentation extractor.
- Buildutils, a set of project
management and packaging tools.
- WebHelpers, a library of
functions for the web.
- Deliverance, a system
for transforming web pages and applying themes.
Major products and projects implemented at Imaginary Landscape:
- Landscaper: a content management system, developed through two
redesigns. The first redesign started as a legacy Zope system,
rewritten still in Zope (but with ZPT instead of DTML) adding
workflow and versioning. The second redesign moved to a
Paste/WebKit version.
- Broadcast Email Manager. This tool is used to send out newsletters
and other posts to large numbers of members. The system includes
tracking and reports on emails, bounce resolution, and measures to
reduce the likelihood of emails being marked as spam.
- Arts & Entertainment Calendar.
- Generic form processing application. This is used for collecting
information from many different kinds of forms, and emailing and/or
saving the data.
- Generic file editor/mini-CMS. This edits pages on disk, with a low
impact on the site.
- Internal navigation framework for applications. This brings
together all our tools into a common navigation system.
- Physician directories for several hospitals.
- A contest submission, review, and voting system for an advertising
award.
- A centralized cross-framework login system.
- A Mailman <http://list.org>_ skinning project, which added some
more friendly and directed screens in front of Mailman.
- Several systems using public key crypto for storing sensitive
information, like credit card numbers and medical information.
- Several client-specific database applications, with custom importing
systems and various reports and queries on the data.
- New application scaffolding, so that new applications all use the
set of standard styles and coding conventions.
- Blogger integration, submitting new posts to Blogger via a Q&A form.
- MapQuest integration with their XSLT-based systems.
Earlham College, Richmond IN, 1995-1998